我正在开发一个简单的应用程序。
它有一个带有预加载图像和按钮的图像视图。
按下按钮时,图像视图中的图像应反转。
它第一次工作,但我希望当我再次按下按钮时它会将图像反转回其原始形式。
然而,第二次按下按钮时它崩溃了。
这是相关代码ViewController.swift
:
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var invertButton: UIButton!
@IBAction func invertButtonPressed(sender: UIButton) {
let beginImage = CIImage(image: imageView.image!)
let filter = CIFilter(name: "CIColorInvert")!
filter.setValue(beginImage, forKey: kCIInputImageKey)
imageView.image = UIImage(CIImage: (filter.outputImage)!)
}
基本上,beginImage
变成nil
第二次,我不知道为什么。我尝试过将那些密集的线分成尽可能多的线来进行调试let
尽我所能完成作业,但随之而来的却是神秘的事情CIImage
构造函数。有任何想法吗?
问题是这一行:
imageView.image = UIImage(CIImage: (filter.outputImage)!)
你不能那样做。 CIImage 不会神奇地变成 UIImage。图像视图需要一个bitmap基于图像,而不是基于 CIImage 的图像。你必须renderCIImage 将其转换为 UIImage,方法是获取 CIContext 并告诉它创建 CGImage,或者将 CIImage 绘制到图形上下文中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)