私は横向きモードのアプリを作成しておりUIImagePickerController
、iPhoneカメラを使用して写真を撮るために使用していますが、横向きモードでも作成したいと考えています。
しかし、Apple のドキュメントが示唆UIImagePickerController
しているように、横向きはサポートされていません。必要な機能を得るにはどうすればよいですか?
私は横向きモードのアプリを作成しておりUIImagePickerController
、iPhoneカメラを使用して写真を撮るために使用していますが、横向きモードでも作成したいと考えています。
しかし、Apple のドキュメントが示唆UIImagePickerController
しているように、横向きはサポートされていません。必要な機能を得るにはどうすればよいですか?
この方法を試してください....
Apple ドキュメントによると、ImagePicker コントローラーは横向きモードでは決して回転しません。ポートレートモードでのみ使用する必要があります。
ImagePicker コントローラーの横向きモードのみを無効にするには、以下のコードに従います。
ViewController.m で:
Image Picker Controller の SubClass(NonRotatingUIImagePickerController) を作る
@interface NonRotatingUIImagePickerController : UIImagePickerController
@end
@implementation NonRotatingUIImagePickerController
// Disable Landscape mode.
- (BOOL)shouldAutorotate
{
return NO;
}
@end
次のように使用します
UIImagePickerController* picker = [[NonRotatingUIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
etc.... Just as Default ImagePicker Controller
これは私のために働いています & 何か問題があれば教えてください.
すべてのインターフェイスの向きで回転をサポートするバージョンを次に示します。
/// Not fully supported by Apple, but works as of iOS 11.
class RotatableUIImagePickerController: UIImagePickerController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .all
}
}
このようにして、ユーザーがデバイスを回転させると、現在の向きをサポートするようにピッカー コントローラーが更新されます。通常は UIImagePickerController をインスタンス化するだけです。
向きのサブセットのみをサポートする場合は、別の値を返すことができます。
UIImagePickerController
ハックせずにランドスケープ モードで使用する正しい方法は、UIPopoverController
- (void)showPicker:(id)sender
{
UIButton *button = (UIButton *)sender;
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
_popover = [[UIPopoverController alloc] initWithContentViewController:picker];
[_popover presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
受け入れられた答えは私にはうまくいきません。modalPresentationStyle を UIImagePickerController に追加して、機能させる必要もありました。
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
pickerController.modalPresentationStyle = UIModalPresentationCurrentContext; //this will allow the picker to be presented in landscape
pickerController.delegate = self;
pickerController.allowsEditing = YES;
pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:pickerController animated:YES completion:nil];
そしてもちろん、これをピッカーを表示するコントローラーに入れることを忘れないでください:
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape; //this will force landscape
}
ただし、Apple のドキュメントによると、このピッカーを横向きモードで表示することはサポートされていないため、注意が必要です。