【问题标题】:Force UIActivityViewController to display in Landscape Mode强制 UIActivityViewController 以横向模式显示
【发布时间】: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


【解决方案1】:

把这个放在viewcontroller的viewDidLoad()

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

【讨论】:

    【解决方案2】:

    你分享的图片是uiactivityviewcontroller的横向视图。您不能强制它以横向显示。

    【讨论】: