我在 drawInContext 中遇到无效上下文错误

发布于 2024-11-01 13:18:55 字数 721 浏览 1 评论 0原文

苹果说我们不能在UIImageView中使用drawRec:。所以我决定使用 CALayer 来完成这项工作,并将图层添加到 UIImageView.layer 中。 我创建了一个名为MyCALayer的类扩展了CALayer类,并用以下内容覆盖了drawInContex:方法:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context,5.0f);
CGContextSetStrokeColorWithColor(context,[UIColor yellowColor].CGColor); 
CGRect newRec = CGRectMake(55,55,55,55);
CGContextAddRect(context,newRec);
CGContextDrawPath(context,kCGPathStroke);

并且我在touchesBegan:withEvent中使用了setNeedsDisplay来使drawInContext:可以被调用。

每个使用上下文的逻辑(例如 CGContextSetLineWidth(context,5.0f);)都会得到一个空句柄警告代码,例如:

Error:CGContextSetWidth: invalid context 0x0

那么,setNeedsDisplay 不是创建了我需要的上下文吗?

For apple said that we can't use drawRec: in a UIImageView. so I decide to use CALayer to do the work, and add the layer to the UIImageView.layer.
I made a Class named MyCALayer extends the CALayer class, and I overwrite the drawInContex: method with:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context,5.0f);
CGContextSetStrokeColorWithColor(context,[UIColor yellowColor].CGColor); 
CGRect newRec = CGRectMake(55,55,55,55);
CGContextAddRect(context,newRec);
CGContextDrawPath(context,kCGPathStroke);

And I used the setNeedsDisplay in touchesBegan:withEvent to make the drawInContext: could be called.

Each logic which uses context (such as CGContextSetLineWidth(context,5.0f);) get a null- handle warning code like:

Error:CGContextSetWidth: invalid context 0x0

So, Wasn't the setNeedsDisplay create the context I needed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

慕烟庭风 2024-11-08 13:18:55

您应该绘制作为参数传递给 drawInContext: 方法的上下文。无需调用UIGraphicsGetCurrentContext()

You are supposed to draw to the context that is passed as an argument to the drawInContext: method. There is no need to call UIGraphicsGetCurrentContext().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文