По-видимому, комментарий комментария felixthehat потребовал определенной репутации.
, Но я хотел бы к второму его призыв к триггерам События/Свойства... Триггерная платформа в WPF позволяет мне делать действительно мощные вещи как разработчику взаимодействия, не имея необходимость погружаться в код. Я пропускаю его.
Простите за этот монолог. :)
Дело в том, что слой UIView явно рисует фон, который не зависит от drawRect:
. Вот почему вы не можете избавиться от фона, переопределив drawRect:
.
Вы можете либо переопределить слой - (void) drawLayer: (CALayer *) в контексте: (CGContextRef) ctx
и заставьте слой рисовать все, что хотите, или вы переопределите - (void) setBackgroundColor: (UIColor *) newColor
и не назначаете newColor для backgroundColor , но с вашим собственным ivar, например myBackgroundColor . Затем вы можете использовать myBackgroundColor в drawRect; чтобы нарисовать фон, как вам нравится.
Переопределение setBackgroundColor:
Определите переменную экземпляра для хранения цвета фона, например myBackgroundColor . В ваших методах инициализации установите реальный цвет фона на clearColor:
- (id) initWithCoder:(NSCoder *)aDecoder
{
if ((self = [super init...])) {
[super setBackgroundColor:[UIColor clearColor]];
}
return self;
}
Override:
- (void) setBackgroundColor:(UIColor *)newColor
{
if (newColor != myBackgroundColor) {
[myBackgroundColor release];
myBackgroundColor = [newColor retain];
}
}
Затем используйте myBackgroundColor в методе drawRect :. Таким образом, вы можете использовать цвет, назначенный из Interface Builder (или Xcode4) в вашем коде.
Это легко воспроизвести:
Создайте новое приложение для iPhone на основе просмотра. Создайте подкласс UIView и оставьте метод drawRect: полностью пустым. В Interface Builder перетащите UIView в главное представление, назначьте ему цвет фона и установите класс представления для своего подкласса. Сохраните, создайте и запустите, и увидите, в представлении отображается цвет фона.
Я обошел это поведение, переопределив setBackgroundColor: и назначив цвет своему собственному ivar, всегда оставляя свойство backgroundColor равным нулю. Это работает, однако мне все еще интересно, почему это работает именно так.
Я стесняюсь, чтобы предложить это, потому что я не хочу тебя обидеть Но вы установили непрозрачную в нет?
Вот более простое решение:
self.backgroundColor = [UIColor clearColor];