UIImagePickerControllerでライブラリから画像を選択
 
 
AppDelegate.swift
//
//  AppDelegate.swift
//  UIKit051_4.0
//
//  Created by KimikoWatanabe on 2016/08/21.
//  Copyright © 2016年 FaBo, Inc. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    var myViewController: UIViewController?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        //ViewControllerのインスタンス化
        myViewController = ViewController()
        //UINavigationControllerのインスタンス化とrootViewControllerの指定
        let myNavigationController = UINavigationController(rootViewController: myViewController!)
        //UIWindowのインスタンス化
        self.window = UIWindow(frame: UIScreen.main.bounds)
        //UIWindowのrootViewControllerにnavigationControllerを指定
        self.window?.rootViewController = myNavigationController
        //UIWindowの表示
        self.window?.makeKeyAndVisible()
        return true
    }
}
//
//  AppDelegate.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/15.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    var myViewController: UIViewController?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        //ViewControllerのインスタンス化
        myViewController = ViewController()
        //UINavigationControllerのインスタンス化とrootViewControllerの指定
        let myNavigationController = UINavigationController(rootViewController: myViewController!)
        //UIWindowのインスタンス化
        self.window = UIWindow(frame: UIScreen.main.bounds)
        //UIWindowのrootViewControllerにnavigationControllerを指定
        self.window?.rootViewController = myNavigationController
        //UIWindowの表示
        self.window?.makeKeyAndVisible()
        return true
    }
} 
//
//  AppDelegate.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/15.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    var myViewController: UIViewController?
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        //ViewControllerのインスタンス化
        myViewController = ViewController()
        //UINavigationControllerのインスタンス化とrootViewControllerの指定
        let myNavigationController = UINavigationController(rootViewController: myViewController!)
        //UIWindowのインスタンス化
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        //UIWindowのrootViewControllerにnavigationControllerを指定
        self.window?.rootViewController = myNavigationController
        //UIWindowの表示
        self.window?.makeKeyAndVisible()
        return true
    } 
} 
ViewController.swift
//
//  ViewController.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/15.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    var myImagePicker: UIImagePickerController!
    var myImageView: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Select a Image"
        myImageView = UIImageView(frame: self.view.bounds)
        // インスタンス生成
        myImagePicker = UIImagePickerController()
        // デリゲート設定
        myImagePicker.delegate = self
        // 画像の取得先はフォトライブラリ
        myImagePicker.sourceType = UIImagePickerController.SourceType.photoLibrary
        // 画像取得後の編集を不可に
        myImagePicker.allowsEditing = false
    }
    override func viewDidAppear(_ animated: Bool) {
        self.present(myImagePicker, animated: true, completion: nil)
    }
    /**
     画像が選択された時に呼ばれる.
     */
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        //選択された画像を取得.
        let myImage: AnyObject?  = info[UIImagePickerController.InfoKey.originalImage] as AnyObject
        //選択された画像を表示するViewControllerを生成.
        let secondViewController = SecondViewController()
        //選択された画像を表示するViewContorllerにセットする.
        secondViewController.mySelectedImage = myImage as? UIImage
        myImagePicker.pushViewController(secondViewController, animated: true)
    }
    /**
     画像選択がキャンセルされた時に呼ばれる.
     */
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        // モーダルビューを閉じる
        self.dismiss(animated: true, completion: nil)
    }
}
//
//  ViewController.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/15.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    var myImagePicker: UIImagePickerController!
    var myImageView: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Select a Image"
        myImageView = UIImageView(frame: self.view.bounds)
        // インスタンス生成
        myImagePicker = UIImagePickerController()
        // デリゲート設定
        myImagePicker.delegate = self
        // 画像の取得先はフォトライブラリ
        myImagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
        // 画像取得後の編集を不可に
        myImagePicker.allowsEditing = false
    }
    override func viewDidAppear(_ animated: Bool) {
        self.present(myImagePicker, animated: true, completion: nil)
    }
    /**
     画像が選択された時に呼ばれる.
     */
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        //選択された画像を取得.
        let myImage: AnyObject?  = info[UIImagePickerControllerOriginalImage]
        //選択された画像を表示するViewControllerを生成.
        let secondViewController = SecondViewController()
        //選択された画像を表示するViewContorllerにセットする.
        secondViewController.mySelectedImage = myImage as! UIImage
        myImagePicker.pushViewController(secondViewController, animated: true)
    }
    /**
     画像選択がキャンセルされた時に呼ばれる.
     */
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        // モーダルビューを閉じる
        self.dismiss(animated: true, completion: nil)
    }
} 
//
//  ViewController.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/15.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    var myImagePicker: UIImagePickerController!
    var myImageView: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Select a Image"
        myImageView = UIImageView(frame: self.view.bounds)
        // インスタンス生成
        myImagePicker = UIImagePickerController()
        // デリゲート設定
        myImagePicker.delegate = self
        // 画像の取得先はフォトライブラリ
        myImagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        // 画像取得後の編集を不可に
        myImagePicker.allowsEditing = false
    }
    override func viewDidAppear(animated: Bool) {
        self.presentViewController(myImagePicker, animated: true, completion: nil)
    }
    /**
     画像が選択された時に呼ばれる.
     */
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        //選択された画像を取得.
        let myImage: AnyObject?  = info[UIImagePickerControllerOriginalImage]
        //選択された画像を表示するViewControllerを生成.
        let secondViewController = SecondViewController()
        //選択された画像を表示するViewContorllerにセットする.
        secondViewController.mySelectedImage = myImage as! UIImage
        myImagePicker.pushViewController(secondViewController, animated: true)
    }
    /**
     画像選択がキャンセルされた時に呼ばれる.
     */
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        // モーダルビューを閉じる
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}
SecondViewController
//
//  SecondViewController.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/22.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import Foundation
import UIKit
class SecondViewController: UIViewController {
    var mySelectedImage: UIImage!
    var mySelectedImageView: UIImageView!
    override func viewDidLoad() {
        self.edgesForExtendedLayout = []
        self.view.backgroundColor = UIColor.white
        setImage()
    }
    /**
     選択された画像をUIImageViewにセットする.
     */
    func setImage(){
        self.title = "Selected Image"
        mySelectedImageView = UIImageView(frame: self.view.bounds)
        mySelectedImageView.contentMode = UIView.ContentMode.scaleAspectFit
        mySelectedImageView.image = mySelectedImage
        self.view.addSubview(mySelectedImageView)
    }
}
//
//  SecondViewController.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/22.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import Foundation
import UIKit
class SecondViewController: UIViewController {
    var mySelectedImage: UIImage!
    var mySelectedImageView: UIImageView!
    override func viewDidLoad() {
        self.edgesForExtendedLayout = []
        self.view.backgroundColor = UIColor.white
        setImage()
    }
    /**
     選択された画像をUIImageViewにセットする.
     */
    func setImage(){
        self.title = "Selected Image"
        mySelectedImageView = UIImageView(frame: self.view.bounds)
        mySelectedImageView.contentMode = UIViewContentMode.scaleAspectFit
        mySelectedImageView.image = mySelectedImage
        self.view.addSubview(mySelectedImageView)
    }
} 
//
//  SecondViewController.swift
//  UIKit056
//
//  Created by Misato Morino on 2016/08/22.
//  Copyright © 2016年 Misato Morino. All rights reserved.
//
import Foundation
import UIKit
class SecondViewController: UIViewController {
    var mySelectedImage: UIImage!
    var mySelectedImageView: UIImageView!
    override func viewDidLoad() {
        self.edgesForExtendedLayout = UIRectEdge.None
        self.view.backgroundColor = UIColor.whiteColor()
        setImage()
    }
    /**
     選択された画像をUIImageViewにセットする.
     */
    func setImage(){
        self.title = "Selected Image"
        mySelectedImageView = UIImageView(frame: self.view.bounds)
        mySelectedImageView.contentMode = UIViewContentMode.ScaleAspectFit
        mySelectedImageView.image = mySelectedImage
        self.view.addSubview(mySelectedImageView)
    }
}
Info,plist
<key>NSPhotoLibraryUsageDescription</key>
<string>YES</string>
<key>NSAppleMusicUsageDescription</key>
<string>YES</string>
Info.plistに上記を追加(2.3には必要ない)
3.xと4.xの差分
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Boolが、- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Boolに変更
- UIImagePickerControllerSourceTypeが- UIImagePickerController.SourceTypeに変更
- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])が- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])に変更
- info[UIImagePickerControllerOriginalImage]が- info[UIImagePickerController.InfoKey.originalImage] as AnyObjectに変更
- myImage as! UIImageが- myImage as? UIImageに変更
- UIViewContentModeが` ``UIView.ContentMode``` に変更
2.3と3.0の差分
- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])から- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])に変更
- func imagePickerControllerDidCancel(picker: UIImagePickerController)から- func imagePickerControllerDidCancel(_ picker: UIImagePickerController)に変更
- presentViewControllerから- presentに変更
- dismissViewControllerAnimatedから- dismissに変更
Reference
- UIImagePickerController