2016-04-26 2 views
0

Я только что начал делать приложения IOS быстрыми. Во всех учебных пособиях люди перетаскивают представление «Просмотр» на контроллер представления, и он автоматически называет себя UIImageView и заполняет весь экран.Просмотр изображения VS UIImage Просмотр размещения Xcode

Когда я перетаскиваю изображение, оно называет себя Image View и никогда не будет заполнять весь экран. Кто-нибудь знает, как заставить мой xcode действовать так же, как и их?

учебник в вопросе: https://www.youtube.com/watch?v=4eP_xW-Zz34

MORE INFO (не обязательно):

Тогда, как я следую за учебники (сделанные в июле 2015ish) код не компилируется, когда я делаю это именно так, как они делают это (минус UIImage против изображения). Всегда есть кое-что.

Разве 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 с Image Views и может помочь определить причину этих проблем.

ответ

0

Вещь photoImageView.image возвращает UIImage, то есть необязательную переменную в Swift, с текущим кодом, который Xcode будет плакать этим предупреждением. Вы можете сделать одно из них: литье

Force:

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

или поставить некоторые гарантию проверки перед:

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

Примечание: Xcode 7, Swift 2. *

+0

Xcode делает рекомендую это исправление, но эта ошибка кода была действительно второстепенной точкой, добавленной в исходный вопрос, является ли мой xcode другим, и если да, то я могу это сделать. – Rorschach

+0

Уверен, что ваш xCode отличается от версии инструкции. Вы знаете, компилятор Swift все еще развивается, что делает некоторый код хорош для старого компилятора, но не для нового компилятора. –

Смежные вопросы