我刚刚开始在swift中制作IOS应用程序。在所有教程中,人们将图像视图拖动到视图控制器,它自动将自己称为UIImageView并填充整个屏幕。
当我拖动图像视图时,它将自己命名为Image View,并且永远不会填满整个屏幕。有谁知道如何让我的xcode像他们一样?
有问题的教程:https://www.youtube.com/watch?v=4eP_xW-Zz34
更多信息(不必要):
然后,当我按照教程(2015年7月制作)时,代码永远不会编译,当我这样做的时候(减去UIImage vs图像)。总有一些事情发生。
ios刚刚切换到swift / xcode的新版本,这使得所有这些教程都已过时,或者是否需要更改一些代码设置以使代码正常工作。
更具体的代码差异和新出现的错误
他们的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var photoImageView: UIImageView!
// Create a place to render the filtered image
let context = CIContext(options: nil)
@IBAction func applyFilter(sender: AnyObject) {
// Create an image to filter
let inputImage = CIImage(image: photoImageView.image)
// Create a random color to pass to a filter
let randomColor = [kCIInputAngleKey: (Double(arc4random_uniform(314)) / 100)]
// Apply a filter to the image
let filteredImage = inputImage.imageByApplyingFilter("CIHueAdjust", withInputParameters: randomColor)
// Render the filtered image
let renderedImage = context.createCGImage(filteredImage, fromRect: filteredImage.extent())
// Reflect the change back in the interface
photoImageView.image = UIImage(CGImage: renderedImage)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我从该代码中得到错误:
let inputImage = CIImage(image: photoImageView.image)
给出错误:Value of optional type 'UIImage?' not unwrapped; did you mean to use '!' or '?'?
我包含此代码和错误的原因是因为我认为它与xcode在图像视图中的行为有所不同,可能有助于查明这些问题的原因。
答案 0 :(得分:0)
事情是photoImageView.image返回一个UIImage,这是Swift中的一个可选变量,当前代码Xcode将会发出警告。 您可以执行以下操作之一:
强制施放:
let inputImage = CIImage(image: photoImageView.image!)
或在之前进行一些担保检查:
guard let img = photoImageView.image else { return }
let inputImage = CIImage(image: img)
注意:Xcode 7,Swift 2。*