У меня есть подкласс 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]);
}
Я проверяю на тренажере.
, пожалуйста, покажите нам инициализатор – Sulthan
@Sulthan Добавлен инициализатор. –
В качестве побочного примечания, поскольку вы должны устанавливать вещи в контексте рисования, не восстанавливая их? – Droppy