我尝试使用我以编程方式创建的图像为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()
请帮忙!谢谢!
答案 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)
}