* 我的观点是在景观模式我保存图像,我希望该图像回来,我的代码在下面,我发现错误“终止应用程序由于未捕获的异常'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];
}`
答案 0 :(得分:16)
尝试将shouldAutoRotate设置为NO并查看它是否有效。
您可以在iOS 6.0或更高版本中使用shouldAutoRotate和supportedInterfaceOrientations方法,而不是(不推荐使用)shouldAutoRotateToInterfaceOrientation方法。
像这样 -
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
- (BOOL) shouldAutorotate {
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
答案 1 :(得分:6)
您只支持横向或纵向的有限方向。但是你在视图控制器中调用了不同的方向。
您可以使用支持的方向查看以下图像。它只支持横向右侧和左侧景观。所以,如果我调用肖像,它将像你一样显示错误。因此,如果您想支持两种方向,请在摘要中进行更改。
See this answer for more detail. 希望它有所帮助。
修改强>
所以你必须把这段代码放在你的viewcontroller中
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
答案 2 :(得分:5)
如果plist中支持的接口方向与-(NSUInteger)supportedInterfaceOrientations
请记住,NSUInteger
返回的supportedInterfaceOrientations
必须是UIInterfaceOrientationMask,请注意-MASK-,我曾经犯过简单地返回UIInterfaceOrientation i.s.o的错误。 ...掩码值(为你自动完成)
e.g。
- (NSUInteger) supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
// and NOT UIInterfaceOrientationPortrait;
}
答案 3 :(得分:4)
注意:如果您使用UIImagePickerController
或UIPopoverController
并且发生了这些error
,则以下解决方案非常好。
此错误仅在iOS 6.0
创建一个新UIImagePickerController's
category
和add
@implementation UIImagePickerController(custom)
-(BOOL)shouldAutorotate
{
return NO;
}
@end
这对我有用。
答案 4 :(得分:1)
如果您使用的是cocos2d v2.1,可以尝试使用此功能。
-(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);
}
支持的方向和自动轮播方向应为相同。
答案 5 :(得分:0)
对于iOS 6.0,如果您的应用仅支持横向模式,当您弹出UIImagePickerController时,它将崩溃。
我的解决方案是将以下类别添加到UIImagePickerController:
@interface UIImagePickerController (oritation)
@end
@implementation UIImagePickerController (oritation)
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
@end
答案 6 :(得分:0)
我遇到了同样的错误,可能是以下一个或多个返回冲突的方向:
我通过明确定义单独的"支持的界面方向(iPad)来解决我的问题。和#34;支持的界面方向(iPhone)" -Info.plist中的键,因为我想要不同设备的不同方向。
祝你好运!