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