有一个非常大的程序,其中总是有一个仅包含自定义段控制器的超级视图。此视图位于屏幕顶部,并以多种方式控制导航。
所以问题只出现在选定的几个视图控制器中,其中所有内容都是100%以编程方式创建的。基本上CGRect没有在属性动态坐标中定义。但是不会在方向变化上重新计算。有没有人有一个简单的方法来控制子视图中的这个?我即将在superview中编写代码以传递到其他子视图的方向..但必须有更好的方法。想法?
答案 0 :(得分:0)
指点:
您可以使用自动调整大小的蒙版来确定视图在边界发生变化时(即方向发生变化时)会发生什么。所以UIViewAutoresizingFlexibleWidth
意味着当边界发生变化时,您的视图将与superview按比例“拉伸”。 UIViewAutoresizingFlexibleLeftMargin
表示您的视图将有效地对齐,因为左边距将根据宽度等进行调整。
有时自动调整大小的蒙版是不够的 - 也许您必须在方向上更改视图的内容,或者执行复杂的动画。在这种情况下,您在视图控制器中使用willAnimateRotationToInterfaceOrientation
方法。您的子视图可能包含您编写的自定义adjustForOrientation
方法,您可以在调用willAnimateRotation...
时触发该方法。
最后,在iOS 5上,您实际上可以在视图控制器中嵌套视图控制器,在这种情况下,方向事件会自动传递...但是对于您尝试执行的操作,这可能是不必要的复杂。