为了返回有效的上下文,您必须在适当的区域。
这基本上意味着需要此代码,drawRect:
或者您需要使用创建图像上下文UIGraphicsBeginImageContext
更新:DrawRect:
这drawRect:
是为每个 UIView 调用的特殊方法,它为您提供使用 Core Graphics 进行自定义绘图的访问点。最常见的用途是在您的情况下创建一个自定义 UIView 对象ArrowView
。然后,您将drawRect:
使用您的代码覆盖。
- (void)drawRect:(CGRect)rect
{
CGPoint p1 = {10, 10};
CGSize size;
CGContextRef context = UIGraphicsGetCurrentContext();
[self drawArrowWithContext:context atPoint:p1 withSize:size lineWidth:400 arrowHeight:400];
}
更新:图像上下文
使用自定义 Core Graphics 绘图的第二种方法是创建一个 imageContext 然后获取其结果。
因此,您首先要创建一个图像上下文,运行您的绘图代码,然后将其转换为可以添加到现有视图中的 UIImage。
UIGraphicsBeginImageContext(CGSizeMake(400.0, 400.0));
CGPoint p1 = {10, 10};
CGSize size;
CGContextRef context = UIGraphicsGetCurrentContext();
[self drawArrowWithContext:context atPoint:p1 withSize:size lineWidth:400 arrowHeight:400];
// converts your context into a UIImage
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
// Adds that image into an imageView and sticks it on the screen.
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageView];