我的iPhone应用程序是设计只支持纵向,除了一个视图控制器,它目前的照片,并且支持横向模式为好。
所以,总体来说我的项目支持所有的方向,但每一个视图控制器(除照片视图控制器)实现的方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
问题:
在我的(只纵向)视图控制器之一,我使用UIActivityViewController
让用户选择通过电子邮件或短信共享内容。
当用户挑选电子邮件选项,它会自动显示在iOS原生电子邮件视图控制器。
如果现在用户设备的方向改为横向,电子邮件视图控制器也改变景观,现在如果用户点击取消/发送按钮,电子邮件控制器被搁置了,现在我所有的应用程序是在的风景线!
有没有办法迫使EAMIL视图控制器是仅在纵向模式?
我知道我可以创建自己的电子邮件视图控制器和子UIActivity
表现出来,但比UIActivityViewController
呈现时将不会显示默认的电子邮件图标,我真的很喜欢它表现出来,而不是其他一些(必须是灰色的)图标我会提供。
你应该让其他的UINavigationController和现在uiactivityviewcontroller从那里。 在此代码_image是一个UIImage哟婉分享。 BlankViewController只是占位符的ViewController您可以在IB创建你也可以把它的视图的背景颜色,清除和做一次出现改变了你想做的事情。
__weak CurrentViewController *weakSelf = self ;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[_image] applicationActivities:nil] ;
UIViewController *viewC = [[UIViewController alloc] initWithNibName:@"BlankViewController" bundle:nil] ;
UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:viewC] ;
activityViewController.completionHandler = ^(NSString *activityType, BOOL completed)
{
[weakSelf dismissViewControllerAnimated:NO completion: ^ {
; // Your completion handler
}] ;
};
[self presentViewController:navC animated:NO completion: ^ {
[navC presentViewController:activityViewController animated:YES completion: ^ {
;
}] ;
}];
我曾在应用我目前正在开发类似的问题。 我结束了覆盖更多的旋转方法,以确保自己的ViewController停留在画像。
这对我来说(IOS5 +)什么工作:
- (BOOL) shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
- (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
如果你是前的ios5或不工作你看看: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html
希望你得到它的工作。 :)
可以是U应尽量
- (void)viewWillAppear:(BOOL)animated
{
[self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeRight];
[super viewWillAppear:animated];
}
你的看法呢?
无法找到了解决这个问题,所以我最终实现我自己的电子邮件UIActivity子...