【发布时间】:2015-01-27 04:32:46
【问题描述】:
我正在寻找一种方法来强制UIActivityViewController 以横向模式显示。我的应用程序完全是纵向的,除了一个将横向图像推到全屏的图像 VC,从这里我希望用户能够以横向启动UIActivityViewController(如下所示)......但是,它总是以纵向启动当前模式。
我将shouldAutoRotate 设置为NO,因为我需要自定义处理如何移动 UI 旋转的某些部分。我目前将preferredInterfaceOrientationForPresentation 设置为UIInterfaceOrientationPortrait 并尝试将其删除,但似乎没有影响。理想情况下,我希望将其设置为 UIInterfaceOrientationPortrait 用于此视图。
我尝试设置状态栏(认为它是用来确定启动方向的),但这也不起作用(下面的代码)。状态栏隐藏在此 VC 中。
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
[self setNeedsStatusBarAppearanceUpdate];
赏金时间帮助我以横向模式启动此菜单以及相应的用户选择(即,如果他们选择“消息”以使其也以横向模式启动)。
这里是重新创建我所看到的代码的基础
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(launchShareMenu)];
[self.view addGestureRecognizer:singleTap];
}
-(BOOL)prefersStatusBarHidden{
return YES;
}
-(BOOL)shouldAutorotate {
return NO;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
- (void) launchShareMenu {
NSString *stringToShare = [NSString stringWithFormat:@"Share Me"];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[stringToShare] applicationActivities:nil];
NSArray *excludedActivities = @[UIActivityTypeAirDrop,
UIActivityTypePostToWeibo,
UIActivityTypeCopyToPasteboard,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,
UIActivityTypePostToTencentWeibo];
controller.excludedActivityTypes = excludedActivities;
//Present controller
[self presentViewController:controller animated:YES completion:nil];
}
【问题讨论】:
-
嗨,蔡斯,你试过这篇文章中提到的内容吗? *.com/questions/14978432/…
-
@JasperPol - 我已经看过这个问题,但不幸的是它不适用于我的情况。我想在关闭自动旋转的 VC 上以横向模式推送 UiActivity 控制器。
-
您能否创建一个示例代码并分享复制该问题的代码?如果你还没有解决它。
-
@bllakjakk -- 我在帖子中添加了基础知识,您可以简单地剪切并粘贴到一个空项目中以查看我所看到的内容。
标签: ios ios8 landscape uiactivityviewcontroller