はここ
// MARK: Camera App
func openCameraApp() {
if UIImagePickerController.availableCaptureModes(for: .rear) != nil {
picker.allowsEditing = false
picker.sourceType = UIImagePickerControllerSourceType.camera
picker.cameraCaptureMode = .photo
picker.modalPresentationStyle = .fullScreen
present(picker,
animated: true,
completion: nil)
} else {
noCamera()
}
}
func noCamera(){
let alertVC = UIAlertController(
title: "No Camera",
message: "Sorry, this device has no camera",
preferredStyle: .alert)
let okAction = UIAlertAction(
title: "OK",
style:.default,
handler: nil)
alertVC.addAction(okAction)
present(
alertVC,
animated: true,
completion: nil)
}
// MARK: Photos Albums
func showImagePicker() {
picker.allowsEditing = false
picker.sourceType = .photoLibrary
//picker.modalPresentationStyle = .Popover
present(picker,
animated: true,
completion: nil)
picker.popoverPresentationController?.sourceView = self.view
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
image = chosenImage
self.performSegue(withIdentifier: "ShowEditView", sender: self)
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: false, completion: nil)
}
// MARK: Seque to EditViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowEditView" {
if let vc = segue.destination as? EditViewController {
vc.image = image
//vc.image = images[0]
}
}
}
を選択/使用するための私の完全なコードは、2つのコメントアウト行を無視しています - これらは、物事をテストするための鉱山です。このコードはiOS 9以降のすべてのデバイスで動作しますが、iPhoneは常にポートレートで表示されますので、シミュレータ(カメラはありません)でも物理デバイスでも問題は一度もありません。
問題が発生する可能性のあるものがある(SIGABRTを投げているかどうかわからない) - 後部カメラをチェックし、存在しなければ警告を発する。 (フロントカメラのチェックはしていませんが、iPod touch以外にフロントカメラがないかどうか分かりません)
また、info.plistに2つのものを追加することを忘れないでください。 iOS 10:
<key>NSCameraUsageDescription</key>
<string>Used to capture new image for photo effect</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Used to select an image for photo effect</string>
説明タグに任意の文字を入力できます。これらがなければ、アプリはiOS 10でシャットダウンされ、Appleはあなたの提出を拒否します。 Here's詳細へのリンク。
出典
2017-01-15 16:59:10
dfd
答えをありがとう。申し訳ありませんが、私の元の質問は少し曖昧でした。私はシミュレータでエラーが発生すると思っていましたが、私のiPhoneではエラーではありません。私は両方で同じエラーが発生しています。 –
私は完全なコードで自分の答えを編集します。それが役に立たなかったら、私に知らせて、私はそれを削除します。ありがとう。 – dfd
@AlanSpark - 問題は@dfdのように 'info.plist'ファイルを更新するだけで解決します。より簡単な方法が必要な場合は、キーをコピー&ペーストしてから、 'info.plist'ファイルに新しい行を挿入するときに値の列に値を手動で入力してください。たとえば、新しい行を作成し、「Key」列に 'NSCameraUsageDescription'を貼り付けます。その後、ちょうど私が私が今述べたことは、実際に「より簡単に」ではないと思いますが、それは「上がらない人々にとってより便利だ「値」欄 – Pierce