图像视图VS UIImage查看Xcode放置

时间:2016-04-26 08:24:55

标签: ios xcode uiimage

我刚刚开始在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在图像视图中的行为有所不同,可能有助于查明这些问题的原因。

1 个答案:

答案 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。*