표시할 때 sourceType 전환
TL;DR
표시된 UIImagePickerController
의 변경이 순조롭게 진행되지 않음
→ 카메라 부팅, 포토 라이브러리 부팅 시 버튼sourceType
을 눌러 확인
- 또는 인스턴스 재생성
하고 싶은 일
나는 촬영한 영상을 얻기 위해 카메라를 가동하고 싶다.
또한 포토 라이브러리에서 이미지를 옵션으로 선택할 수 있기를 바랍니다.
해본 일
실시 방침
sourceType
시동 카메라
포토 라이브러리 버튼을 클릭한 경우UIImagePickerController
의 경우UIImagePickerController
에서 sourceType
로 변경camera
출처
원래photoLibrary
사용하던UIImagePickerController
카메라 표시 중에 포토 라이브러리 버튼을 설정할 예정입니다.
먼저 테스트를 위해 취소 버튼cameraOverlayView
으로 전환 picker
FirstViewController.swiftimport UIKit
import Photos
class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var picker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
// 許可リクエスト
AVCaptureDevice.requestAccess(for: AVMediaType.video) { (Bool) in
return
}
}
/// Picker起動ボタン
///
/// - Parameter sender:
@IBAction func btn1_TouchUpInside(_ sender: Any) {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
/// Picker初期化
///
/// - Parameter type: sourceType
func pickerInit(type: UIImagePickerController.SourceType){
self.picker = UIImagePickerController()
self.picker.sourceType = type
self.picker.delegate = self
self.picker.navigationBar.tintColor = UIColor.white
self.picker.navigationBar.barTintColor = UIColor.gray
present(self.picker, animated: false, completion: nil)
}
// MARK: - UIImagePickerControllerのデリゲートメソッド
/// 画像選択時
///
/// - Parameters:
/// - picker:
/// - info:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// モーダルビューを閉じる
self.picker.dismiss(animated: true, completion: nil)
}
/// キャンセル時
///
/// - Parameter picker:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 表示中のpickerのsourceTypeを切り替えるだけ
if picker.sourceType == UIImagePickerController.SourceType.photoLibrary {
self.picker.sourceType = UIImagePickerController.SourceType.camera
}
else {
self.picker.sourceType = UIImagePickerController.SourceType.photoLibrary
}
}
}
결실
스쿠시
1. 시작할 때
2. Picker 부팅(카메라)
3.sourceType 전환(포토 라이브러리)
4.sourceType 전환(카메라)
5.sourceType 전환(포토 라이브러리)
!!!?!?!!???!!?!??!?!???wwwwwwwww
카메라는 보통인데 두 번째로 포토라이브러리가 나오면 아무것도 없어!이게 뭐야!!
조사하다.
지면 디자인 한 번 볼까...
1. 정상 상태
2.이상 시
sourceType
사라졌어...!?
누구세요?누구세요?무서워!
징징거려도 안 나오더니 보고도 잘 모르겠다.
그럼 어떡해.
한 번PUPhotoPickerHostViewController
을 했는데 도르르르UIImagePickerController
가 바뀌었어요. 맛이 없을 거예요.
사진 촬영과 사진 라이브러리의 선택은 모두 버튼을 눌러 분리하는 응용이다.
실시 방침
sourceType
시동 카메라
사진 라이브러리 단추를 눌렀을 때, 표시된 UIImagePickerController
가 아닌 UIImagePickerController
실례를 새로 생성했습니다.
출처
원래 카메라 디스플레이에 사진 라이브러리 단추를 설정하려고 하였으나, 아래는 생략한다
SecondViewController.swiftimport UIKit
import Photos
class SecondViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
var picker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
// 許可リクエスト
AVCaptureDevice.requestAccess(for: AVMediaType.video) { (Bool) in
return
}
}
/// Picker起動ボタン
///
/// - Parameter sender:
@IBAction func btn1_TouchUpInside(_ sender: Any) {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
/// Picker初期化
///
/// - Parameter type: sourceType
func pickerInit(type: UIImagePickerController.SourceType){
self.picker = UIImagePickerController()
self.picker.sourceType = type
self.picker.delegate = self
self.picker.navigationBar.tintColor = UIColor.white
self.picker.navigationBar.barTintColor = UIColor.gray
present(self.picker, animated: false, completion: nil)
}
// MARK: - UIImagePickerControllerのデリゲートメソッド
/// 画像選択時
///
/// - Parameters:
/// - picker:
/// - info:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// モーダルビューを閉じる
self.picker.dismiss(animated: true, completion: nil)
}
/// キャンセル時
///
/// - Parameter picker:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 一旦表示中のモーダルを閉じる
self.picker.dismiss(animated: false, completion: nil)
// sourceTypeを切り替えて再度インスタンス生成から行う
if picker.sourceType == UIImagePickerController.SourceType.photoLibrary {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
else {
pickerInit(type: UIImagePickerController.SourceType.photoLibrary)
}
}
}
결실
몇 번을 전환하든지 카메라, 사진 라이브러리를 정상적으로 표시할 수 있다.
총결산
사실대로 말하면 나는 요인을 잘 모른다.
표시된 sourceType
의 sourceType
변경은 가이드라인을 따르지 않았나요...?
당분간 이 방법으로 해결했지만 좀 더 쉬운 방법이 있는 것 같아요.
Reference
이 문제에 관하여(표시할 때 sourceType 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/haserror/items/b841520b147c3e90e326
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
나는 촬영한 영상을 얻기 위해 카메라를 가동하고 싶다.
또한 포토 라이브러리에서 이미지를 옵션으로 선택할 수 있기를 바랍니다.
해본 일
실시 방침
sourceType
시동 카메라
포토 라이브러리 버튼을 클릭한 경우UIImagePickerController
의 경우UIImagePickerController
에서 sourceType
로 변경camera
출처
원래photoLibrary
사용하던UIImagePickerController
카메라 표시 중에 포토 라이브러리 버튼을 설정할 예정입니다.
먼저 테스트를 위해 취소 버튼cameraOverlayView
으로 전환 picker
FirstViewController.swiftimport UIKit
import Photos
class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var picker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
// 許可リクエスト
AVCaptureDevice.requestAccess(for: AVMediaType.video) { (Bool) in
return
}
}
/// Picker起動ボタン
///
/// - Parameter sender:
@IBAction func btn1_TouchUpInside(_ sender: Any) {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
/// Picker初期化
///
/// - Parameter type: sourceType
func pickerInit(type: UIImagePickerController.SourceType){
self.picker = UIImagePickerController()
self.picker.sourceType = type
self.picker.delegate = self
self.picker.navigationBar.tintColor = UIColor.white
self.picker.navigationBar.barTintColor = UIColor.gray
present(self.picker, animated: false, completion: nil)
}
// MARK: - UIImagePickerControllerのデリゲートメソッド
/// 画像選択時
///
/// - Parameters:
/// - picker:
/// - info:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// モーダルビューを閉じる
self.picker.dismiss(animated: true, completion: nil)
}
/// キャンセル時
///
/// - Parameter picker:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 表示中のpickerのsourceTypeを切り替えるだけ
if picker.sourceType == UIImagePickerController.SourceType.photoLibrary {
self.picker.sourceType = UIImagePickerController.SourceType.camera
}
else {
self.picker.sourceType = UIImagePickerController.SourceType.photoLibrary
}
}
}
결실
스쿠시
1. 시작할 때
2. Picker 부팅(카메라)
3.sourceType 전환(포토 라이브러리)
4.sourceType 전환(카메라)
5.sourceType 전환(포토 라이브러리)
!!!?!?!!???!!?!??!?!???wwwwwwwww
카메라는 보통인데 두 번째로 포토라이브러리가 나오면 아무것도 없어!이게 뭐야!!
조사하다.
지면 디자인 한 번 볼까...
1. 정상 상태
2.이상 시
sourceType
사라졌어...!?
누구세요?누구세요?무서워!
징징거려도 안 나오더니 보고도 잘 모르겠다.
그럼 어떡해.
한 번PUPhotoPickerHostViewController
을 했는데 도르르르UIImagePickerController
가 바뀌었어요. 맛이 없을 거예요.
사진 촬영과 사진 라이브러리의 선택은 모두 버튼을 눌러 분리하는 응용이다.
실시 방침
sourceType
시동 카메라
사진 라이브러리 단추를 눌렀을 때, 표시된 UIImagePickerController
가 아닌 UIImagePickerController
실례를 새로 생성했습니다.
출처
원래 카메라 디스플레이에 사진 라이브러리 단추를 설정하려고 하였으나, 아래는 생략한다
SecondViewController.swiftimport UIKit
import Photos
class SecondViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
var picker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
// 許可リクエスト
AVCaptureDevice.requestAccess(for: AVMediaType.video) { (Bool) in
return
}
}
/// Picker起動ボタン
///
/// - Parameter sender:
@IBAction func btn1_TouchUpInside(_ sender: Any) {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
/// Picker初期化
///
/// - Parameter type: sourceType
func pickerInit(type: UIImagePickerController.SourceType){
self.picker = UIImagePickerController()
self.picker.sourceType = type
self.picker.delegate = self
self.picker.navigationBar.tintColor = UIColor.white
self.picker.navigationBar.barTintColor = UIColor.gray
present(self.picker, animated: false, completion: nil)
}
// MARK: - UIImagePickerControllerのデリゲートメソッド
/// 画像選択時
///
/// - Parameters:
/// - picker:
/// - info:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// モーダルビューを閉じる
self.picker.dismiss(animated: true, completion: nil)
}
/// キャンセル時
///
/// - Parameter picker:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 一旦表示中のモーダルを閉じる
self.picker.dismiss(animated: false, completion: nil)
// sourceTypeを切り替えて再度インスタンス生成から行う
if picker.sourceType == UIImagePickerController.SourceType.photoLibrary {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
else {
pickerInit(type: UIImagePickerController.SourceType.photoLibrary)
}
}
}
결실
몇 번을 전환하든지 카메라, 사진 라이브러리를 정상적으로 표시할 수 있다.
총결산
사실대로 말하면 나는 요인을 잘 모른다.
표시된 sourceType
의 sourceType
변경은 가이드라인을 따르지 않았나요...?
당분간 이 방법으로 해결했지만 좀 더 쉬운 방법이 있는 것 같아요.
Reference
이 문제에 관하여(표시할 때 sourceType 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/haserror/items/b841520b147c3e90e326
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
import Photos
class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var picker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
// 許可リクエスト
AVCaptureDevice.requestAccess(for: AVMediaType.video) { (Bool) in
return
}
}
/// Picker起動ボタン
///
/// - Parameter sender:
@IBAction func btn1_TouchUpInside(_ sender: Any) {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
/// Picker初期化
///
/// - Parameter type: sourceType
func pickerInit(type: UIImagePickerController.SourceType){
self.picker = UIImagePickerController()
self.picker.sourceType = type
self.picker.delegate = self
self.picker.navigationBar.tintColor = UIColor.white
self.picker.navigationBar.barTintColor = UIColor.gray
present(self.picker, animated: false, completion: nil)
}
// MARK: - UIImagePickerControllerのデリゲートメソッド
/// 画像選択時
///
/// - Parameters:
/// - picker:
/// - info:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// モーダルビューを閉じる
self.picker.dismiss(animated: true, completion: nil)
}
/// キャンセル時
///
/// - Parameter picker:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 表示中のpickerのsourceTypeを切り替えるだけ
if picker.sourceType == UIImagePickerController.SourceType.photoLibrary {
self.picker.sourceType = UIImagePickerController.SourceType.camera
}
else {
self.picker.sourceType = UIImagePickerController.SourceType.photoLibrary
}
}
}
한 번
PUPhotoPickerHostViewController
을 했는데 도르르르UIImagePickerController
가 바뀌었어요. 맛이 없을 거예요.사진 촬영과 사진 라이브러리의 선택은 모두 버튼을 눌러 분리하는 응용이다.
실시 방침
sourceType
시동 카메라사진 라이브러리 단추를 눌렀을 때, 표시된
UIImagePickerController
가 아닌 UIImagePickerController
실례를 새로 생성했습니다.출처
원래 카메라 디스플레이에 사진 라이브러리 단추를 설정하려고 하였으나, 아래는 생략한다
SecondViewController.swift
import UIKit
import Photos
class SecondViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
var picker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
// 許可リクエスト
AVCaptureDevice.requestAccess(for: AVMediaType.video) { (Bool) in
return
}
}
/// Picker起動ボタン
///
/// - Parameter sender:
@IBAction func btn1_TouchUpInside(_ sender: Any) {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
/// Picker初期化
///
/// - Parameter type: sourceType
func pickerInit(type: UIImagePickerController.SourceType){
self.picker = UIImagePickerController()
self.picker.sourceType = type
self.picker.delegate = self
self.picker.navigationBar.tintColor = UIColor.white
self.picker.navigationBar.barTintColor = UIColor.gray
present(self.picker, animated: false, completion: nil)
}
// MARK: - UIImagePickerControllerのデリゲートメソッド
/// 画像選択時
///
/// - Parameters:
/// - picker:
/// - info:
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// モーダルビューを閉じる
self.picker.dismiss(animated: true, completion: nil)
}
/// キャンセル時
///
/// - Parameter picker:
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// 一旦表示中のモーダルを閉じる
self.picker.dismiss(animated: false, completion: nil)
// sourceTypeを切り替えて再度インスタンス生成から行う
if picker.sourceType == UIImagePickerController.SourceType.photoLibrary {
pickerInit(type: UIImagePickerController.SourceType.camera)
}
else {
pickerInit(type: UIImagePickerController.SourceType.photoLibrary)
}
}
}
결실
몇 번을 전환하든지 카메라, 사진 라이브러리를 정상적으로 표시할 수 있다.
총결산
사실대로 말하면 나는 요인을 잘 모른다.
표시된 sourceType
의 sourceType
변경은 가이드라인을 따르지 않았나요...?
당분간 이 방법으로 해결했지만 좀 더 쉬운 방법이 있는 것 같아요.
Reference
이 문제에 관하여(표시할 때 sourceType 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/haserror/items/b841520b147c3e90e326
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(표시할 때 sourceType 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/haserror/items/b841520b147c3e90e326텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)