Я играл с примером кода Apple для настройки UITableViewCells. Я столкнулся с некоторым странным поведением, которое оставило меня полностью запутанным о том, как работает backgroundColor.
Следующий код представляет собой значительно уменьшенную версию примера пользовательского UIView Apple в пользовательском UITableViewCell. Функция init устанавливает цвет фона на фиолетовый, а затем drawRect устанавливает цвет фона на зеленый. Я ожидаю, что никогда не увижу фиолетового, но это все, что я вижу. Из операторов NSLog я знаю, что метод init вызывается для каждой из ячеек, после чего вызывается drawRect для каждой из ячеек. Зеленая настройка, кажется, игнорируется. Если я позвоню [self setNeedsDisplay]
в любое время после начальной загрузки, фон будет правильно настроен на зеленый.
- (id)initWithFrame:(CGRect)frame {
counter = 0;
if ((self = [super initWithFrame:frame])) {
self.opaque = YES;
self.backgroundColor = [UIColor purpleColor];
}
return self;
}
- (void)drawRect:(CGRect)rect {
self.backgroundColor = [UIColor greenColor];
}
Может кто-нибудь объяснить мне, почему это происходит так?