【发布时间】:2011-11-11 21:40:09
【问题描述】:
我的应用有一个无法改变方向的视图控制器。把它想象成一个需要固定在原地的运动场。
我现在想放置一个 UIActionSheet,但考虑到用户拿着设备的方式,我想将工作表与方向匹配。
似乎 UIActionSheet 与 MFComposerViewController 不同,它没有从我根据方向旋转的 StatusBar 获取它的方向,而是从底层视图控制器获取它的方向。换言之,UIActionSheet 以纵向显示,无论设备是如何被握持的。
我试过了:
CGAffineTransform t = CGAffineTransformMakeRotation(lastUIAngle);
[actionSheet setTransform:t];
if (UIInterfaceOrientationIsLandscape(lastOrientation))
actionSheet.frame = CGRectMake(0, 0, 480, 320);
else
actionSheet.frame = CGRectMake(0, 0, 320, 480);
actionSheet.center = self.view.center;
我设法获得了正确的方向,但是生成的操作表是从纵向出现的,并且其大小就好像它仍然处于纵向一样。动作表的框架是根据按钮的数量等计算出来的。
是否有人设法强制 UIActionSheet 以指定方向正确显示?
(我也尝试创建一个新视图,该视图已转换并具有正确的大小,但 UIActionSheet 忽略了它。剩下的就是创建一个自动旋转的新 UIViewController,并让 UIActionSheet 成为它的子级。但是,这意味着我的比赛场地被新的视图控制器完全遮蔽了。)
【问题讨论】:
标签: ios uiviewcontroller uiactionsheet uiinterfaceorientation