Я создал подкласс UIView под названием MiniView.
Я пытаюсь добавить его в свой viewController следующим образом:
@interface SomeViewController ()
@property (strong, nonatomic) MiniView *miniView;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
self.miniView = [[MiniView alloc] initWithFrame:CGRectMake(20.f, 20.f, 200.f, 200.f)];
_miniView.backgroundColor = [UIColor blackColor];
[self.view addSubview:_miniView];
}
Класс MiniView выглядит так:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect
{
NSLog(@"DRAW RECT");
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor * redColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
CGContextSetFillColorWithColor(context, redColor.CGColor);
CGContextFillRect(context, self.bounds);
}
Но drawRect никогда не вызывается, если я не вызываю его явно из метода setNeedsLayout. Он также ничего не рисует. Я пробовал просто добавить UIImageView в метод drawRect, и это нормально. Но приведенный выше код ничего не дает.
Я тоже получаю сообщение об ошибке:
: CGContextSetFillColorWithColor: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека использует недопустимый контекст и тем самым способствует общему снижению стабильности и надежности системы. Это уведомление любезно: пожалуйста, устраните эту проблему. В грядущем обновлении это станет фатальной ошибкой.
Если я распечатаю оператор журнала в методе drawRect и выведу значения 'rect', он будет правильным при 200 x 200, поэтому я не знаю, почему контекст равен 0x0.
Итак, одна проблема заключается в том, что drawRect никогда не вызывается, а другая проблема в том, что если я вызываю его явно, ничего не отображается ...