我不知道为什么这会停止工作,但是当我尝试绘制任何部分时,这段代码会崩溃我的设备。我是核心图形的新手,所以任何指针或建议都会有很大的帮助。谢谢!
// Style
CGContextRef context = UIGraphicsGetCurrentContext();
// Colors
CGColorRef fillBox = [UIColor colorWithRed:250.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0].CGColor;
CGColorRef fillBoxShadow = [UIColor colorWithRed:77.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0].CGColor;
CGRect box = CGRectMake(5, 5, self.frame.size.width - 10, self.frame.size.height - 10);
// Shadow
CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 1.0, fillBoxShadow);
CGContextAddRect(context, box);
CGContextFillPath(context);
// Box
CGContextSetFillColorWithColor(context, fillBox);
CGContextAddRect(context, box);
CGContextFillPath(context);
答案 0 :(得分:2)
如果您的项目使用ARC,那么这两行可能是您问题的一部分:
CGColorRef fillBox = [UIColor colorWithRed:250.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0].CGColor;
CGColorRef fillBoxShadow = [UIColor colorWithRed:77.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0].CGColor;
ARC正在释放UIColor对象,从而释放CGColorRef。您需要保留CGColorRef,然后在完成后将其释放。
我会写这样的代码:
UIColor *fillBox = [UIColor colorWithRed:250.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0];
UIColor *fillBoxShadow = [UIColor colorWithRed:77.0/255.0 green:77.0/255.0 blue:77.0/255.0 alpha:1.0];
然后在方法中使用fillBox.CGColor和fillBoxShadow.CGColor。
答案 1 :(得分:0)
而不是做
CGContextAddRect(context, box);
CGContextFillPath(context);
尝试使用CGContextFillRect
。
您无法事先填写尚未添加到上下文中的路径。
注意:你可以做到
CGContextAddPath(context, [UIBezierPath pathWithRect:box].CGPath);
CGContextFillPath(context);
但与填充矩形相比,这有点过分。
(不确定pathWithRect:
语法,但它存在。)