我的iPad应用程序允许用户创建UIView并将它们放在主视图上。所以这些视图是以编程方式创建的,而不是在xib文件中。然后它记得这些UIViews的合作伙伴。然后,用户可以选择稍后显示此UIViews集合。
---------------- ----------------
|Collection 1 >| > | | |
|Collection 2 | | View A | |
|Collection 3 | | | |
| | |--------------|
| | | | |
| | | | View B |
| | | | |
---------------- ----------------
所以,上面你可以看到Collection 1
已被选中。
现在,应用程序应该可以在横向和纵向中使用。因此,如果以纵向创建视图,然后以横向显示,我该如何处理合作?反之亦然?甚至在创建视图时也是如此。
在我的情况下,我希望UIViews按比例调整,如果视图在一个方向上相互邻接,那么它们也应该在另一个方向上相邻。所以上面的内容就是这样:
---------------- ------------------
|Collection 1 >| > | | |
|Collection 2 | | View A | |
|Collection 3 | |----------------|
| | | | View B |
| | | | |
| | ------------------
| |
----------------
我想我要问的部分是:有没有办法在不实际旋转的情况下获得其他方向的合作?
答案 0 :(得分:1)
您只需要设置自动调整遮罩。像view.autoresizingMask = UIViewAutoresizingMaskFlexibleWidth | UIViewAutoresizingMaskFlexibleHeight
编辑:我刚刚意识到,我忘记了视图b的情况。对于主视图,您需要设置:UIViewAutoresizingMaskFlexibleWidth | UIViewAutoresizingMaskFlexibleHeight
对于视图A:UIViewAutoresizingMaskFlexibleWidth | UIViewAutoresizingMaskFlexibleHeight
由于视点A的高度会降低,因此视图B必须向上移动。我们需要设置灵活的上边距掩码。
对于视图B:UIViewAutoresizingMaskFlexibleWidth | UIViewAutoresizingMaskFlexibleHeight | UIViewAutoresizingFlexibleTopMargin
在给出自动调整遮罩的同时,我假设你将视图置于最顶层。这意味着你设置的框架只是一个像10.0这样的值,或者相对于其元素放置在它自己的视图上方,例如viewB.frame = CGRectMake(xCoordinate, viewA.frame.origin.y + viewA.frame.size.height, width, height)
如果你有像viewB.frame = CGRectMake(xCoordinate, mainView.frame.size.height - 200.0, width, height)
答案 1 :(得分:1)
你应该转过" on" all 调整大小掩码,用于子视图(视图A和视图B)。
viewA.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleBottomMargin;
如果这样做,那么视图的所有边缘都将其位置保持为父视图空间的一部分。例如,视图A的框架可以被认为是(左,上,宽,高)=(0%,0%,80%,50%)和视图B为(40%,50) %,60%,50%)。当您旋转视图时底部和顶部仍然是50%,尽管它在数值上是不同的值。视图A的左侧和顶部仍然靠近父视图的边缘。即使这些利润是灵活的,如果利润率为零,它们也不会改变。 B的右下边缘相同。
答案 2 :(得分:0)
您可以在单独的方法中移出逻辑来处理coords,并在usingShouldAutorotateToInterfaceOrientation
或shouldAutorotate
中依据ios版本调用此方法