呈现的视图控制器如何从当前方向(尤其是横向)初始化?
Posted
技术标签:
【中文标题】呈现的视图控制器如何从当前方向(尤其是横向)初始化?【英文标题】:How does presented view controller init from current orientation (especially in landscape)? 【发布时间】:2012-10-15 03:35:19 【问题描述】:我有一个视图控制器,名为 AViewController。 AViewController 中有一个按钮。单击按钮时,我将呈现另一个视图控制器,称为 BViewController。如果 AViewController 是纵向的,它工作得很好。如果方向是横向,那么 BViewController 仍然以纵向初始化,但以横向显示。
这就是问题所在。我想知道如何以当前方向初始化 BViewController。我在 BViewController 的初始化中使用 [UIScreen mainScreen].bounds。但如果设备处于横向,则边界不在横向。我知道将帧从 AViewController 传递给 BViewController,它可能会起作用。但我认为这不是一个好的解决方案。那么有没有更好的办法呢?
呈现BViewController的函数如下:
- (void)BtnClicked
BViewController *bvc = [[BViewController alloc] init];
bvc.delegate = self;
bvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:movie animated:YES completion:nil];
【问题讨论】:
【参考方案1】:我仍然不知道如何有效地做到这一点。但我使用一种解决方案在viewDidAppear
中手动调用willAnimateRotationToInterfaceOrientation
方法。
sn-p如下:
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[self willAnimateRotationToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation duration:0];
【讨论】:
以上是关于呈现的视图控制器如何从当前方向(尤其是横向)初始化?的主要内容,如果未能解决你的问题,请参考以下文章