2016-04-26 61 views
0

我剛開始在swift中製作IOS應用程序。在所有教程中,人們將一個Image視圖拖到視圖控制器,並自動調用自己的UIImageView並填充整個屏幕。圖片視圖VS UIImage View Xcode placement

當我拖動圖像視圖時,它將自己命名爲圖像視圖,並且永遠不會填滿整個屏幕。有誰知道如何讓我的xcode像他們一樣行事?

教程問題:https://www.youtube.com/watch?v=4eP_xW-Zz34

MORE INFO(非必要):

然後我跟着教程(七月2015ish製造),當我做到這一點的代碼永遠不會編譯只是他們的方式它(減去UIImage vs圖片)。總有一些事情要做。

是不是隻是切換到一個新版本的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與Image Views的行爲差異有關,並可能有助於查明這些問題的原因。

回答

0

事情是photoImageView.image返回一個UIImage,它是Swift中的一個可選變量,當前代碼中的Xcode將會發出警告。 您可以執行下列操作之一:

力鑄造:

let inputImage = CIImage(image: photoImageView.image!) 

或把一些擔保前檢查:

+0

的Xcode做的Xcode 7,斯威夫特2 *:

guard let img = photoImageView.image else { return } let inputImage = CIImage(image: img) 

注建議修復,但該代碼錯誤真的是一個添加到最初問題上的第二點,是我的Xcode不同,如果是的話,我可以不這樣做。 – Rorschach

+0

確定您的xCode與指令的版本不同。你知道,Swift編譯器仍然在不斷髮展,這使得一些代碼在舊編譯器上是好的,但是在新編譯器上卻沒有。 –