【问题标题】:Creating a UIImage programmatically - Code Error以编程方式创建 UIImage - 代码错误
【发布时间】:2014-10-31 15:55:53
【问题描述】:

我编写了 UIImage 的这个简单扩展来从预定义的颜色和大小开始绘制图像。

这是代码:

extension UIImage {

    class func image(color:UIColor, size:CGSize)->UIImage {

        UIGraphicsBeginImageContextWithOptions(size, true, 2.0);

        let context = UIGraphicsGetCurrentContext()
        let rect = CGRectMake(0, 0, size.width, size.height)

        color.set()

        CGContextFillRect(context, rect)
        var image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image
    }
}

如果我在控制器的 ViewDidLoad 方法中启动此代码,则会收到此错误

Oct 31 16:48:02 iPhone Budjet_v2[3387] <Error>: CGContextSetFillColorWithColor: 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.
Oct 31 16:48:02 iPhone Budjet_v2[3387] <Error>: CGContextSetStrokeColorWithColor: 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.
Oct 31 16:48:02 iPhone Budjet_v2[3387] <Error>: CGContextFillRects: 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.
fatal error: unexpectedly found nil while unwrapping an Optional value

我不明白我的代码有什么问题。

【问题讨论】:

  • 您发布的代码在测试项目中运行良好。错误在别处。
  • 模糊的想法:也许在 viewDidLoad 期间不存在 CGContext?我很好奇如果你从 viewDidAppear 尝试会发生什么;在实际绘制某些东西之前可能没有 CGContext。

标签: ios swift core-graphics


【解决方案1】:

这似乎是 iOS 7 中引入的错误。答案here 中列出了导致此错误的方法的完整列表。

这个问题的建议做法是向 CGPostError 添加一个符号断点,以便在发生此错误时分析堆栈,以确定触发此错误的原因。

此错误可能由多种情况触发,如果不进行进一步研究,则无法确定哪些情况会触发该错误。

祝你好运!

【讨论】:

    【解决方案2】:
        if (!(CGSizeEqualToSize(size, CGSizeZero))){
    
        // your drawing code....
    
        }else{
    
    
    return nil;
    
    }
    

    (这个 ObjC 很明显,抱歉,我还不是一个熟练的 swift-slinger.... 我怀疑你的问题是大小 (0,0)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多