“刷新”设备旋转视图
Posted
技术标签:
【中文标题】“刷新”设备旋转视图【英文标题】:"refresh" view on device rotation 【发布时间】:2010-09-23 11:42:25 【问题描述】:我在viewDidLoad
中设置了我的视图。所有不同的框架等子视图都已相对于self.view
定义。因此,self.view
的大小无关紧要,子视图总是会缩小或扩大以适应(原样)。
所以当我旋转我的设备时,我希望视图旋转(使用shouldAutoRotateToInterfaceOrientation:...
很容易)但子视图保持相同的形状。
调用[self viewDidLoad];
使所有元素都适合,但会在之前的布局之上放置一个新层(这很明显......但我只是想解释一下我的意思)。
有什么办法可以刷新子视图的框架之类的吗?老实说,我不知道其他人做了什么。我是否必须将所有视图作为属性放入 .h 文件中,并在 didRotate...
上手动执行所有操作?
【问题讨论】:
【参考方案1】:您有三个选择:
如果自动调整大小掩码足以定位您的视图,请在创建每个子视图时为其分配正确的自动调整大小掩码。
如果自动调整掩码不够用,请覆盖 willAnimateRotationToInterfaceOrientation:duration:
并在该方法中重新定位您的子视图。我将创建一个将方向作为参数并负责布置所有子视图的自定义方法。然后您可以从willAnimateRotationToInterfaceOrientation:duration:
和viewDidLoad
调用此方法。
您还可以创建一个自定义的UIView
子类,并使您的视图控制器的视图成为此类的一个实例。然后覆盖layoutSubviews
以根据视图的大小定位所有子视图。这种方法意味着您的自定义视图管理其子视图而不是视图控制器。
【讨论】:
谢谢...查看了现在应该做的自动调整掩码:)。 :) 只是补充:如果您正在编写自己的 UIView 包含控制器。您可以覆盖willLayoutSubviews:
和didLayoutSubviews:
以在设备旋转时收到通知。以上是关于“刷新”设备旋转视图的主要内容,如果未能解决你的问题,请参考以下文章