2015-06-16 3 views
0

У меня есть подкласс UITableViewCell, и я пытаюсь рисовать линию внутри drawRect.iOS drawRect неправильно читает свойство цвета

Существует свойство separatorColor в заголовке sublass:

@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, что верно.

Initializer:

-(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. Несмотря на это, я буду отмечать это как правильное. –

Смежные вопросы