[英]ios Handling of parentViews if orientation changes
也许是一个基本问题,这是我第一个处理iPad上不同方向的应用程序。
UIView1-> UIButton->呈现UIView2
在UIView1和UIView2中,我根据方向确定包含视图的框架和大小
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
还行吧。 但是,如果View2处于焦点位置,方向会发生变化,并且我关闭View2时,View1不会响应方向变化。 View本身的方向正确,但是不执行UIView1包含的元素的帧和大小的计算。
做到这一点的“正确”方法是什么? 我是否必须在View2中调用一个委托方法来设置View1中的新位置(如果由于内存而没有释放,希望在后台进行抵抗)?
MadMaxApp
你可以实现
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration;
要么
willAnimateRotationToInterfaceOrientation:duration
在您的视图控制器中。
这些方法将在旋转更改之前被调用,并为您提供了手动处理旋转的可能性。 如果AUTORESIZE没有给出正确的结果(我明白你在做你的看法有些自定义计算布局,这可能是有用的shouldAutorotateToInterfaceOrientation
,所以它可能是这种情况)。
更笼统地说,考虑到有几种处理轮换的方法。 他们有不同的职责:
shouldAutorotateToInterfaceOrientation
:它只是说支持哪种方向;
willAnimateRotationToInterfaceOrientation:duration
:当您希望这些更改在旋转发生时生效时,可以在这里修改帧,大小,位置等。
willRotateToInterfaceOrientation:duration:
在这里做任何必要的事情:停止动画,计时器,实时更新等;
didRotateFromInterfaceOrientation:
与3相反。
当然,这只是一个准则。 你可以
答案取决于您告诉界面部分放置自己的位置。 就像在代码中或在nib编辑器中为它们提供所有正确的自动调整大小的掩码值一样简单。 或者,您可能必须实现didRotateFromInterfaceOrientation
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.