gpt4 book ai didi

ios - 绘制 UIBezierPath 时出现无效内容错误

转载 作者:行者123 更新时间:2023-11-29 03:12:24 25 4
gpt4 key购买 nike

我正在尝试使用以下代码在 viewdidload 中制作一个简单的圆圈:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

UIBezierPath* aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100,100) radius:100 startAngle:M_PI/6 endAngle:M_PI clockwise:YES];


[aPath fill];
}

我收到以下错误:

CGContextSaveGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context  and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.

我知道这个问题已经在讨论中了here但我无法理解。错误发生在

[aPath fill];

这与应用程序生命周期有关吗?

最佳答案

这个错误意味着你没有上下文来绘制路径,而你必须有一个。

由于此代码位于 View Controller 中,因此您需要决定应该在哪个上下文中绘制。

您可以自己创建一个上下文并将您的路径绘制到其中,这将是有益的,例如,如果您想创建一个包含该路径的图像。这将使用 CGBitmapContextCreate 来完成。

或者,通过将路径绘制到 View Controller View 上下文中,可能还有更多您正在寻找的内容。这在 drawRect: 方法中可用。因此,您将在您的自定义 View 子类中实现它并将您的代码移到那里。

另一种方法是使用 CAShapeLayer,使用路径创建(使用 CGPath)并将其添加为 View Controller View 层的子层。那么你根本不需要担心上下文......

关于ios - 绘制 UIBezierPath 时出现无效内容错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22120242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com