0

私はグーグルでこれを検索すると多くの記事を見つけることができますが、本当にこのケースをカバーするものはありませんので、私は非常に具体的にしようとします。 iPhoneとiPadの両方にランドスケープ専用アプリがあります。UIImagePickerControllerはランドスケープのみのアルバムから選ぶiPhone/iPadアプリ

let imagePicker = UIImagePickerController() 
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 
imagePicker.mediaTypes = [kUTTypeImage as String] 
imagePicker.modalPresentationStyle = UIModalPresentationStyle.Popover 
imagePicker.allowsEditing = false 
context.presentViewController(imagePicker, animated: true, completion: { 
    () -> Void in 

}) 

Apple mentionsは、iPad上で、これは他にも例外がスローされます設定する必要がありますどのようになるので、私はポップオーバー提示様式を使用しています:私は、ユーザーが次のコードで彼のアルバムから画像を選択できるようにしようとしています:

の表は、 フォトライブラリまたはsavedPhotosAlbumのソース・タイプを指定した場合のiPadに、あなたは( UIPopoverPresentationControllerを参照してください、これを行う方法を学ぶために)ポップオーバーコントローラを使用して、イメージピッカー を提示しなければならないことを示しています。保存した画像と ムービーの間で選択するために画像 ピッカーをモ​​ーダル(フルスクリーン)で表示しようとすると、システムで例外が発生します。

これは、私が試してみました何以下のエラー

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [PUUIAlbumListViewController shouldAutorotate] is returning YES' 

で失敗します。

  • サブクラスUIImagePickerControllerとのUIViewControllerをfalseに横向きと設定shouldAutorotateをサポートするために、私はこれは無用だと思いますここで失敗したクラスはPUUIAlbumListViewControllerです
  • 私のアプリがポートレートをサポートするように設定すると、これは動作しますが、アプリケーション全体電話でのotorates、これは
  • は中間UIPopoverPresentationControllerを使用して起こることを意味していないのではなく、決して何も

UPDATE ない答えが、私がいないように見えるかもしれほどクレイジーを表示するためにこれを得ましたこれは実行可能だと思う。すべてが意味をなさない最先端のAPIを提供してくれたAppleに感謝します。 私はDKImagePickerControllerを使用して終了しました。完全に仕事をします

答えて

0

私はこの問題を景観を実施したアプリと同様に持っていました。唯一の選択肢は、イメージピッカーが表示されたときのデフォルトの位置であるため、イメージピッカーが肖像画として現れるようにすることです。

0

ナビゲーションコントローラをサブクラス化し、横向きマスクを変更します。そのNavigationControllerからImage Pickerコントローラを表示します。

class CustomNavigation: UINavigationController { 
override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
override var shouldAutorotate: Bool { 
    return false 
} 
override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask.portrait 
} 

/* 
// MARK: - Navigation 
// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 


} 
関連する問題