ios - 绘制 UIImage 时出现无效的上下文错误

标签 ios cocoa-touch uikit uiimage

我正在尝试将 UIImage 绘制到我的 UIView 的上下文中。我已经将此代码与上下文内容一起使用,并在其中注释掉......

- (void)drawRect:(CGRect)rect
{
    //UIGraphicsBeginImageContextWithOptions(rect.size,YES,[[UIScreen mainScreen] scale]);
    //UIGraphicsBeginImageContext(rect.size);

    UIImage *newImage = [UIImage imageNamed:@"character_1_0001.png"];
    //[newImage drawAtPoint:CGPointMake(200, 200)];
    [newImage drawInRect:rect];

    //UIGraphicsEndImageContext();
}

据我了解,我不需要设置图像上下文来执行此操作,实际上如果没有它,我确实会看到在 View 中绘制的图像,但我也在日志中收到此错误...
<Error>: CGContextSaveGState: invalid context 0x0

如果我取消注释 UIGraphicsBeginImageContext 行,我不会画任何东西,也不会出错。

我是否需要使用默认的图形上下文并以某种方式声明它?

我需要绘制图像,因为我想在上下文中添加它并且不能只生成 UIImageView 对象的负载。

最佳答案

听起来你在打电话 drawRect:直接地。因此,它会从您的电话中调用一次,然后从真正的绘图循环中调用一次。

  • 有了上下文创建,你在一个新的上下文中完成所有的绘图然后丢弃它,所以你什么都看不到
  • 由于缺少上下文创建,您会从手动调用的 drawRect: 中得到错误。 ,实际绘制发生在正版drawRect:所以你看到你的形象。

  • 请勿调用drawRect:直接地。调用 setNeedsDisplaydrawRect:将在适当的时候为您打电话。

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

    相关文章:

    ios - 是否可以从其父 View 的边界中取消剪裁单个 subview ?

    swift - UIViewController 子类似乎加载了不需要的 Nib

    iphone - 为什么我在两个 vc 之间的委托(delegate)不起作用?

    iOS App Beta 分发(大规模)

    ios - 在 SpriteKit/Swift 中显示 GADBannerView 的最佳方式

    cocoa-touch - MapKit更新标注图片

    iphone - 我的应用程序在上传数据时收到内存警告后崩溃了

    ios - 如何获取 backBarButtonItem 的宽度?

    objective-c - 如何使用 "Splash"UIViewController 有条件地重定向到另一个 View Controller ?

    ios - 使用来自 Parse.com PFQueryTableViewController 的 editActionsForRowAtIndexPath 提取行数据