2015-06-16 49 views
0

我有一個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]); 
} 

我測試的模擬器。

+1

請向我們展示初始化程序 – Sulthan

+1

@Sulthan添加初始化程序。 –

+0

作爲一個旁註,你應該在繪圖上下文中設置東西而不用恢復它們? – Droppy

回答

1

更改屬性名稱爲separatorColor2 - 應該阻止Apple自己的代碼設置您的separatorColor

+0

我剛剛這樣做,它的工作。我將它重命名爲separatorColor1。無論如何,我會將此標記爲正確的。 –