我一直在玩一些Apple's example code用於定製UITableViewCells。我遇到了一些奇怪的行爲,讓我對backgroundColor的工作原理感到困惑。backgroundColor如何在Objective_C中爲UIView處理?
以下代碼是蘋果自定義UITableViewCell中自定義UIView示例的簡化版本。 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];
}
任何人都可以向我解釋爲什麼會這樣發生?
對不起,但我看到的只是綠色,沒有紫色。你想粘貼你的UITableViewDataSource代碼嗎? – ZhangChn 2011-06-03 17:41:13
如果你看看上面的蘋果鏈接,看看第五個例子,那就是我開始的項目。唯一的改變是將CustomeTableViewCell簡化爲基本上你所看到的,因爲它是我能得到的最小代碼量,仍然顯示我看到的問題。 – JGoforth 2011-06-04 04:19:52