我有一个iPad应用程序,它具有登录屏幕,登录控件包含在UIView中。
当iPad处于纵向时,我在应用程序的底部和中心附近有登录UIView,几乎就在键盘的正上方,公司徽标位于顶部中心的UIImageView中。我正在使用AutoLayout约束来保持公司徽标被吸引到顶部和右侧,并且Login UIView被吸引到底部和右侧。
http://chattypics.com/files/ipadportrait_0dzalz3ipx.png
当我将其旋转为横向时,效果如下:
http://chattypics.com/files/ipadlandscape1_j15ps5c95u.png
我希望它看起来像这样
http://chattypics.com/files/ipadlandscape2_sobufqkdhg.png
所以,我希望这两个元素是并排的,我希望Login UIView更加向右。在纵向模式下,UIView右侧的间距量大于我想要的横向模式,并且距离底部的距离小于我想要的横向模式。我可以通过“容器中心”来处理这个问题,但这在横向模式下也不起作用。
我在横向模式下使用了详细in this post的技术使事情“并排”,但我不相信这就足够了,因为我想要“视图”中的布局轮换也有所不同。
我可以想办法以编程方式解决这个问题,但是我无法想象这是一个独特的需求,所以是否有某些方法只使用IB中的约束来解决这个问题?有些“这就是IB中的限制因素设计的方式”,可能涉及优先事项?或者我只需要在代码中解决这个问题吗?
答案 0 :(得分:5)
您可以使用Interface Builder中的约束的不同优先级来实现此类行为。对于两个视图(“公司徽标”和“登录视图”),您需要设置“容器中的垂直中心”和“容器中的水平中心”约束,并降低优先级。 接下来,您需要使用具有“小于或等于”等关系的规则来定义“垂直空间”和“水平空间”约束。
我使用Interface Builder实现了这种行为。
此外,您可以使用不同的优先级将“小于或等于”与“大于或等于”相结合,以获得最佳效果。
答案 1 :(得分:0)
而不是重新定位元素,看起来你只需要单独旋转它们。在容器视图中设置它们,在视图控制器视图中居中容器视图。然后只需设置两个视图之间的距离,并在它们上设置自动旋转。