尝试使用以编程方式创建的图像为UIImageView设置动画时引发错误

时间:2015-08-18 23:00:44

标签: ios swift animation uiimageview

我尝试使用我以编程方式创建的图像为UIImageView设置动画。每当我拨打http://www.threadflip.com/api/v3/items?attribution%5Bapp%5D=web&item_collection_id=&q=john+hardy&page=1&page_size=30 时,我都会收到错误

startAnimating()

我理解当Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 中的一张图片为零时,会抛出此错误,但我的一张图片都没有。

创建一个新的单视图iOS-9应用程序,并将以下代码粘贴到视图控制器的imageView.animationImages中,以查看正在进行的操作。

viewDidLoad()

请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

我明白了。当从CIImage创建UIImage时,UIImage的CGImage属性为零。我想UIImageView的支持层使用CGImage来渲染自己。无论如何,要从CIImage获取CGImage,我必须创建一个CIContext,然后调用CIContext.createCGImage:FromRect:,然后使用CGImage创建一个UIImage ...这里的代码

    //Create a context
    let myEAGLContext = EAGLContext(API: EAGLRenderingAPI.OpenGLES2)

    let options = [kCIContextWorkingColorSpace: NSNull()]

    let myContext = CIContext(EAGLContext: myEAGLContext, options: options)


    //Create animation images

    var animationImages = [UIImage]()

    let hueAdjustFilter = CIFilter(name: "CIHueAdjust")!

    hueAdjustFilter.setValue(cropFilter.outputImage, forKey: "inputImage")

    for (var i: CGFloat = 0; i < 10; i++) {

        hueAdjustFilter.setValue(-CGFloat(M_PI) + CGFloat(i/10.0) * 2.0 * CGFloat(M_PI), forKey: "inputAngle")

        let hueAdjustedCGImage = myContext.createCGImage(hueAdjustFilter.outputImage, fromRect: CGRectMake(0, 0, 300, 300))

        let finalImage = UIImage(CGImage: hueAdjustedCGImage)

        animationImages.append(finalImage)

    }