Я новичок в объективе-c, и теперь у меня возникла проблема, которую я не понимаю, как ее решить. Я читал эту тему CGContextSetFillColorWithColor: invalid context 0x0, но не нашел ответа.<Error>: CGContextSetFillColorWithColor: недопустимый контекст 0x0
Проблема заключается в том, что я получаю 2 ошибки, как это:
CGContextSetFillColorWithColor: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека использует недопустимый контекст и тем самым способствует общему ухудшению стабильности и надежности системы. Это уведомление является любезностью: устраните эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
Это мой код:
#import "PushButtonView.h"
#import <QuartzCore/QuartzCore.h>
@implementation PushButtonView
@synthesize isAddButton;
@synthesize fillColor;
-(id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:(NSCoder *)aDecoder];
if (!self) {
return nil;
}
[self inspectableDefaults];
return self;
}
-(void)inspectableDefaults{
self.isAddButton = YES;
self.fillColor = [UIColor colorWithRed:0.95 green:0.6 blue:0.5 alpha:1];
[self.fillColor setFill];
}
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
if (self.isAddButton) {
self.fillColor = [UIColor colorWithRed:0.3 green:0.85 blue:0.91 alpha:1];
} else
self.fillColor = [UIColor colorWithRed:0.95 green:0.6 blue:0.5 alpha:1];
[self.fillColor setFill];
CGContextFillEllipseInRect(context, rect);
//Line characteristics
CGContextSetRGBStrokeColor(context, 1, 1, 1, 1);
CGContextSetLineWidth(context, 4);
// Horizontal line
CGPoint bezierStart = {self.bounds.origin.x + (self.bounds.size.width)/5, self.bounds.size.height/2};
CGPoint bezierEnd = {self.bounds.size.width - (self.bounds.size.width)/5, self.bounds.size.height/2};
CGContextBeginPath(context);
CGContextMoveToPoint(context, bezierStart.x, bezierStart.y);
CGContextAddLineToPoint(context, bezierEnd.x, bezierEnd.y);
CGContextStrokePath(context);
// Vertical line
if (self.isAddButton) {
CGPoint bezier2Start = {self.bounds.size.width/2, self.bounds.size.width - (self.bounds.size.height)/5};
CGPoint bezier2End = {self.bounds.size.width/2, (self.bounds.origin.y + self.bounds.size.height/5)};
CGContextBeginPath(context);
CGContextMoveToPoint(context, bezier2Start.x, bezier2Start.y);
CGContextAddLineToPoint(context, bezier2End.x, bezier2End.y);
CGContextStrokePath(context);
}
[self.fillColor setFill];
}
@end
Что произойдет, если вы закомментируете вызовы '-setFill'? –
если я прокомментирую все вызовы setFill, я получу неслоистые изображения, но мне это действительно не нужно в методе inspectableDefaults – AOY