2016-12-12 9 views
0

私のiOSアプリケーションでは、ImageViewとカメラとフォトライブラリを開くための2つのボタンがあります。ボタンの1つをクリックすると、アプリケーションが終了します。 (私はデバイス上で、シミュレータではなくアプリケーションを実行しています) 私のコードで何を変更しなければなりませんか?カメラとPhotoLibraryへのアクセス

class PhotoViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 


@IBOutlet weak var ImageDisplay: UIImageView! 
@IBOutlet weak var libraryOutlet: UIButton! 
@IBOutlet weak var cameraOutlet: UIButton! 


override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

@IBAction func openCameraButton(_ sender: UIButton) { 
     let picker = UIImagePickerController() 
     picker.delegate = self 
     picker.sourceType = .camera 
     present(picker, animated: true, completion: nil) 

    } 

@IBAction func openLibraryButton(_ sender: UIButton) { 
     let picker = UIImagePickerController() 
     picker.delegate = self 
     picker.sourceType = .photoLibrary 
     present(picker, animated: true, completion: nil) 
    } 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    ImageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    dismiss(animated: true, completion: nil) 
} 

}

答えて

0

あなたはiOS10上で実行されている場合、あなたは入れInfo.plistの

プライバシー・カメラの使用中にこのキーをカメラ

にアクセスするためのInfo.plist内のエントリを追加する必要があります記述

http://useyourloaf.com/blog/privacy-settings-in-ios-10/

あなたのケースで起こっているようにアプリケーションがクラッシュする場合

0

ios 10でアプリケーションを開発している場合は、info.plistにプライバシーの設定を追加し、このプライバシーが必要な場所を記述する必要があります。

プライバシー設定一覧:

Bluetoothの共有 - NSBluetoothPeripheralUsageDescription

カレンダー - NSCalendarsUsageDescription

CallKit - NSVoIPUsageDescription

カメラ - NSCameraUsageDescription

コンタクト - N SContactsUsageDescription

健康 - NSHealthShareUsageDescription & NSHealthUpdateUsageDescription

HomeKit - NSHomeKitUsageDescription

場所 - NSLocationUsageDescription、NSLocationAlwaysUsageDescription、

NSLocationWhenInUseUsageDescription

メディアライブラリ - NSAppleMusicUsageDescription

マイク - NSMicrophoneUsageDescription

モーション - NSMotionUsageDescription

写真 - NSPhotoLibraryUsageDescription

リマインダ - NSRemindersUsageDescription

音声認識 - NSSpeechRecognitionUsageDescription

シリキット - NSSiriUsageDescription

TVプロバイダ - NSVideoSubscriberAccountUsageDescription

0

iOS 10は、私たちがそれを使用している理由が言及されるまで、連絡先、カメラ、写真ライブラリ、ユーザーの場所などにアクセスできません。ソースコードとして以下のコードを追加してくださいdictこれをもう一度実行してください。 iOSの10で

<!-- Photo Library --> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>$(PRODUCT_NAME) photo use</string> 

<!-- Camera --> 
<key>NSCameraUsageDescription</key> 
<string>$(PRODUCT_NAME) camera use</string> 

<!-- Location --> 
<key>NSLocationUsageDescription</key> 
<string>$(PRODUCT_NAME) location use</string> 

<!-- Contacts --> 
<key>NSContactsUsageDescription</key> 
<string>$(PRODUCT_NAME) contact use</string> 
1

あなたのplistにキーの下に追加することにより、フォトライブラリやカメラにアクセスする権限を必要としますが、適切なデリゲートメソッドを使用する必要があります。

アクセスフォトライブラリに

enter image description here

@IBAction func library(_ sender: UIButton) { 

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) { 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary 
     imagePicker.allowsEditing = true 
     self.present(imagePicker, animated: true, completion: nil) 
     } 
    } 

デバイスのカメラにアクセスするには:

:画像を選択し、表示するには

@IBAction func camera(_ sender: UIButton) { 

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {  
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera; 
     imagePicker.allowsEditing = false 
     self.present(imagePicker, animated: true, completion: nil) 
     } 
    } 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { ImageDisplay.image = image } picker.dismiss(animated: true, completion: nil); } 

出力:

enter image description here

関連する問題