繁体   English   中英

ios如果方向更改,则处理parentViews

[英]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 ,所以它可能是这种情况)。

更笼统地说,考虑到有几种处理轮换的方法。 他们有不同的职责:

  1. shouldAutorotateToInterfaceOrientation :它只是说支持哪种方向;

  2. willAnimateRotationToInterfaceOrientation:duration :当您希望这些更改在旋转发生时生效时,可以在这里修改帧,大小,位置等。

  3. willRotateToInterfaceOrientation:duration:在这里做任何必要的事情:停止动画,计时器,实时更新等;

  4. didRotateFromInterfaceOrientation:与3相反。

当然,这只是一个准则。 你可以

答案取决于您告诉界面部分放置自己的位置。 就像在代码中或在nib编辑器中为它们提供所有正确的自动调整大小的掩码值一样简单。 或者,您可能必须实现didRotateFromInterfaceOrientation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM