ios – 强制UIActionSheet使用特定方向

ios – 强制UIActionSheet使用特定方向,第1张

概述我的应用程序有一个视图控制器,无法更改方向.把它想象成一个需要保持固定的运动场. 我现在想要提出一个UIActionSheet,但考虑到用户拿着设备的方式,我想将表单与方向匹配. 似乎UIActionSheet与MFComposerViewController不同,它不是从StatusBar获取它的方向,我根据方向旋转它,但从底层视图控制器获取它的方向.换句话说,UIActionSheet以纵向方 我的应用程序有一个视图控制器,无法更改方向.把它想象成一个需要保持固定的运动场.

我现在想要提出一个UIActionSheet,但考虑到用户拿着设备的方式,我想将表单与方向匹配.

似乎UIActionSheet与MFComposerVIEwController不同,它不是从Statusbar获取它的方向,我根据方向旋转它,但从底层视图控制器获取它的方向.换句话说,UIActionSheet以纵向方式显示,无论设备如何被保持.

我试过了:

CGAffinetransform   t = CGAffinetransformMakeRotation(lastUIAngle);[actionSheet settransform:t];if (UIInterfaceOrIEntationIsLandscape(lastOrIEntation))    actionSheet.frame = CGRectMake(0,480,320);else     actionSheet.frame = CGRectMake(0,320,480);actionSheet.center = self.vIEw.center;

我设法得到正确的方向,但最终的动作表从纵向侧出现,并且大小就像是纵向还是一样.动作表的框架是根据按钮数等计算的.

有没有人设法迫使UIActionSheet正确显示在指定的方向?

(我也尝试创建一个新的视图,它被转换并具有正确的大小,但是UIActionSheet忽略了它.剩下的是创建一个自动旋转的新UIVIEwController,并让UIActionSheet成为它的一个孩子.但是,这意味着新的视图控制器完全掩盖了我的比赛场地.)

解决方法 事实证明答案很简单.添加此代码以强制UIActionSheets到您想要的任何方向:

tempVIEw = [[UIVIEw alloc] initWithFrame:CGRectMake(0,0)];tempVIEw.transform = CGAffinetransformMakeRotation(lastUIAngle);tempVIEw.frame = CGRectMake(0,self.vIEw.frame.size.wIDth,self.vIEw.frame.size.height);[self.vIEw.window addSubvIEw:tempVIEw];UIActionSheet *actionSheet = ...[actionSheet showInVIEw:tempVIEw];

lastUIAngle是pi / 2的倍数,在这种情况下,我从上次更改方向时保存了.

总结

以上是内存溢出为你收集整理的ios – 强制UIActionSheet使用特定方向全部内容,希望文章能够帮你解决ios – 强制UIActionSheet使用特定方向所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1073496.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存