首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加到横向视图时,UIView旋转了90度

添加到横向视图时,UIView旋转了90度
EN

Stack Overflow用户
提问于 2011-08-14 10:07:01
回答 1查看 749关注 0票数 1

我正在开发一个定制的UIPopoverController。我没有子类化,我是从头开始编写自己的NSObject子类。

它的工作原理非常简单。它在UIWindow上添加了一个全屏UIView来拦截触摸。在该视图之上,它添加(较小的) popover视图,并将popover放置在合适的位置。

我在一个肖像状的iPad应用程序中测试了它,它工作得很好。它可以很好地定位弹出视图。

但现在我遇到了一个问题。我需要在一个横向的iPad应用程序中使用它,但是我的popover控制器的视图仍然是纵向的,而不是横向的。它不会自动旋转(我认为它应该自动旋转)。

我知道我可以通过设置transform属性来手动旋转视图。但这将使事情变得非常复杂,因为我将不得不重新计算正确的位置,考虑到90度旋转。有什么办法可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-14 10:18:30

让我们来看看UIPopoverController在这里做了什么。从文档中:

如果用户在弹出式鼠标悬停可见时旋转设备,则弹出式鼠标控制器将隐藏弹出式鼠标悬停,然后在旋转结束时再次显示。popover控制器尝试为您适当地定位popover,但在某些情况下,您可能需要再次显示它或将其完全隐藏。

因此,UIPopoverController不会像UIViewController那样旋转它维护的弹出式视图。考虑到UIPopoverController继承自NSObject,因此不继承处理旋转的UIViewController的代码,这是有意义的。

您正在尝试实现自己的UIPopoverController (我不会问为什么!),而且您还继承了NSObject,所以您不会继承任何会为您旋转视图的代码。当您将全屏UIView添加到UIWindow时,UIView存在于UIWindow坐标空间中。旋转设备时,UIWindow 的坐标空间永远不会更改。为了在横向模式下旋转视图并将其移动到正确的空间,您必须手动完成此操作,方法是将CGSAffineTransform应用于UIView的transform属性,可能会使用从状态栏的界面方向派生的角度计算旋转矩阵(这是UIViewController为您做的事情!)

您的自定义UIPopoverController可以管理轮换,但如果可能的话,使用UIViewController子类免费获取会更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7054543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档