我创建了一个名为 MiniView 的 UIView 子类。
我尝试将它添加到我的 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 方法中。它也没有绘制任何东西。我试过在 drawRect 方法中添加一个 UIImageView ,这看起来很好。但是上面的代码什么也没产生。
我也得到错误:
:CGContextSetFillColorWithColor:无效的上下文0x0。这是一个严重的错误。此应用程序或它使用的库正在使用无效的上下文,从而导致系统稳定性和可靠性的整体下降。此通知是出于礼貌:请解决此问题。这将成为即将到来的更新中的致命错误。
如果我在drawRect方法中打印一个日志语句并输出'rect'值,它在200 x 200是正确的,所以我不知道为什么上下文是0x0。
所以一个问题是 drawRect 永远不会被调用,另一个问题是如果我明确地调用它,什么都不会显示......