我有一個UITableViewCell的子類,我正試圖在drawRect中畫一條線。iOS drawRect不能正確讀取顏色屬性
有一個在sublass的頭一個屬性separatorColor
:
@interface DXDecisionsTableViewCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *titleLabel;
@property (nonatomic, strong) UIColor *separatorColor;
@end
而且drawRect中看起來是這樣的:
- (void) drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect cellBounds = self.bounds;
CGRect separatorRect = CGRectMake(0, cellBounds.size.height - kDXDecisionsTableViewCellSeparatorHeight, cellBounds.size.width, kDXDecisionsTableViewCellSeparatorHeight);
NSAssert(self.separatorColor, @"separator color not set");
NSLog(@"%@", [self.separatorColor stringValue]);
CGContextSetFillColorWithColor(context, self.separatorColor.CGColor);
//[self.separatorColor setFill];
//[[UIColor blueColor] setFill];
//CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
//self.separatorColor = [UIColor redColor];
//CGContextSetFillColorWithColor(context, self.separatorColor.CGColor);
CGContextFillRect(context, separatorRect);
//NSLog(@"self is %p", self);
}
如果設置了內部drawRect
一種顏色,然後它工作,我不知道爲什麼。
如果我打印一個值separatorColor
我得到#c7c7cc
,即使在初始化程序中它是#7f00ffb2
這是正確的。
初始化程序:
-(void)awakeFromNib {
// Initialization code
self.separatorColor = [UIColor colorWithRed:0.5f green:0.0f blue:1.0f alpha:0.7f];
NSLog(@"%@", [self.separatorColor stringValue]);
}
我測試的模擬器。
請向我們展示初始化程序 – Sulthan
@Sulthan添加初始化程序。 –
作爲一個旁註,你應該在繪圖上下文中設置東西而不用恢復它們? – Droppy