* 私のビューはランドスケープモードです。画像を保存していて、その画像を元に戻したいのですが、コードが下にあり、「キャッチされていない例外「UIApplicationInvalidInterfaceOrientation」によるアプリの終了」、理由:「サポートされている向き」アプリケーションとの共通の方向性がなく、shouldAutorotateがYESを返します '"* iPhoneでできること
`- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissModalViewControllerAnimated:YES];
[picker release];
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:NO];
imageDoodle.image = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
}
-(IBAction)loadfromalbumclicked:(id)sender
{
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing=NO;
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
// self.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:picker animated:YES];
}
-(IBAction)savePrint{
//Save image to iOS Photo Library
UIImageWriteToSavedPhotosAlbum(imageDoodle.image, nil, nil, nil);
//Create message to explain image is saved to Photos app library
UIAlertView *savedAlert = [[UIAlertView alloc] initWithTitle:@"Saved"
message:@"Your picture has been saved to the photo library, view it in the
Photos app." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
//Display message alert
[savedAlert show];
}`
shouldAutoRotateをNOに設定してみて、機能するかどうかを確認してください。
(推奨されない)shouldAutoRotateToInterfaceOrientationメソッドの代わりに、iOS 6.0以降ではshouldAutoRotateメソッドとsupportedInterfaceOrientationsメソッドを使用できます。
このようなもの -
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
- (BOOL) shouldAutorotate {
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
横向きまたは縦向きの限られた向きのみをサポートしています。しかし、ビューコントローラーで別の向きを呼び出します。
サポートされている方向で次の画像を見ることができます。右向きと左向きのみサポートしているので、ポートレートを呼び出すと、エラーが表示されます。したがって、両方の向きをサポートしたい場合は、要約で変更します。
詳細についてはこの回答を参照してください。 お役に立てば幸いです。
[〜#〜]編集[〜#〜]
したがって、このコードをビューコントローラに配置する必要があります
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
このエラーは、plistでサポートされているインターフェースの向きと-(NSUInteger)supportedInterfaceOrientations
によって返される向きの間に不一致がある場合にスローされます
NSUInteger
によって返されるsupportedInterfaceOrientations
はUIInterfaceOrientationMaskでなければならないことに注意してください。-MASK-に注意してください。UIInterfaceOrientationi.s.oを単に返すというミスをしたことがあります。 ...マスク値(これはオートコンプリートです)
例えば.
- (NSUInteger) supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
// and NOT UIInterfaceOrientationPortrait;
}
注:UIImagePickerController
またはUIPopoverController
を使用し、これらのerror
が発生する場合は、以下の解決策が適しています。
また、これらのエラーはiOS 6.0
のみ
新しいものを作成UIImagePickerController's
category
およびadd
@implementation UIImagePickerController(custom)
-(BOOL)shouldAutorotate
{
return NO;
}
@end
それは私にとってはうまくいきます。
Cocos2d v2.1を使用している場合は、Portraitでこれを試すことができます。
-(NSUInteger)supportedInterfaceOrientations {
// iPhone only
if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
return UIInterfaceOrientationMaskPortrait;
// iPad only
return UIInterfaceOrientationMaskPortrait;
}
// Supported orientations. Customize it for your own needs
// Only valid on iOS 4 / 5. NOT VALID for iOS 6.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// iPhone only
if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
// iPad only
// iPhone only
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
サポートされる方向および自動回転方向は同じである必要があります。
同じエラーが発生しました。次のリターンの競合する向きの1つ以上である可能性があります。
-Info.plistで「サポートされているインターフェイスの向き(iPad)」キーと「サポートされているインターフェイスの向き(iPhone)」キーを個別に明示的に定義することにより、私のデバイスを解決しました。
幸運を!
IOS 6.0では、アプリが横向きモードのみをサポートしている場合、UIImagePickerControllerをポップアップするとクラッシュします。
私の解決策は、以下のカテゴリをUIImagePickerControllerに追加することです。
@interface UIImagePickerController (oritation)
@end
@implementation UIImagePickerController (oritation)
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
@end