2016-04-26 6 views
0

Ich habe gerade begonnen, IOS-Apps in swift zu erstellen. In allen Tutorials zieht man eine Image-Ansicht auf den View-Controller und nennt sich automatisch eine UIImageView und füllt den gesamten Bildschirm aus.Image View VS UIImage Xcode-Platzierung anzeigen

Wenn ich die Bildansicht über ziehe, benennt sie sich selbst Image View, und wird nie den gesamten Bildschirm ausfüllen. Weiß jemand, wie man meinen xcode wie ihren verhält?

Tutorial in Frage: https://www.youtube.com/watch?v=4eP_xW-Zz34

MEHR INFO (nicht erforderlich):

Dann, als ich folge Tutorials (hergestellt im Juli 2015ish) der Code nie kompiliert, wenn ich es tue nur so, wie sie tun es (minus der UIImage vs Bild). Es gibt immer ein paar Dinge.

Hat ios einfach zu einer neuen Version von swift/xcode gewechselt, die alle diese Tutorials veraltet macht oder gibt es einige Codeeinstellungen, die ich ändern muss, damit der Code funktioniert?

Speziellere Code Unterschiede und Schwellen Fehler

Ihr Code:

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. 
    } 

} 

Fehler ich von diesem Code erhalten:

let inputImage = CIImage(image: photoImageView.image) 

Gibt den Fehler: Value of optional type 'UIImage?' not unwrapped; did you mean to use '!' or '?'?

Der Grund Ich schließe diesen Code ein, und der Fehler liegt darin, dass ich glaube, dass er mit dem Unterschied in xcodes Verhalten bei Image Views zusammenhängt und die Ursache dieser Probleme aufzeigen kann.

Antwort

0

Die Sache ist PhotoImageView.image gibt ein UIImage, das ist eine optionale Variable in Swift, mit dem aktuellen Code der Xcode wird diese Warnung weinen. Sie können eine von ihnen tun:

Force-Casting:

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

oder eine Garantie setzen Überprüfung vor:

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

Hinweis: Xcode 7, Swift 2. *

+0

Xcode tut empfehle diese Korrektur, aber dieser Codefehler war wirklich ein zweiter Punkt, der auf die anfängliche Frage hinzugefügt wurde, ist mein xcode anders und wenn ja, kann ich es nicht machen. – Rorschach

+0

Sicher ist Ihr xCode mit der Version des Befehls unterschiedlich. Weißt du, der Swift-Compiler entwickelt sich immer noch weiter, so dass ein Teil des Codes gut für den alten Compiler ist, aber nicht für den neuen Compiler. –