我有一个带有登录屏幕的 iPad 应用程序,登录控件包含在 UIView 中。
当 iPad 处于纵向方向时,我的登录 UIView 靠近应用程序的底部和中心,几乎就在键盘所在位置的正上方,公司徽标位于顶部居中的 UIImageView 中。我使用自动布局约束来使公司徽标保持在顶部和右侧,并将登录 UIView 保持在底部和右侧。
(source: chattypics.com)
当我将其旋转为横向时,效果是这样的:
(source: chattypics.com)
我希望它看起来像这样
(source: chattypics.com)
因此,我希望这两个元素并排,并且我希望 Login UIView 位于更右侧。在纵向模式下,UIView 右侧的间距量大于我想要的横向模式,并且距底部的距离小于我想要的横向模式。我可以通过“容器中心”来处理这个问题,但这在横向模式下也不起作用。
我已经使用了详细的技术在这篇文章中在横向模式下使事物“并排”,但我认为这在这里还不够,因为我希望“视图”中的布局在旋转时也有所不同。
我可以想出以编程方式实现这一目标的方法,但我无法想象这是一个独特的需求,那么有没有某种方法仅使用 IB 中的约束来实现这一目标?一些“这就是 IB 中的约束设计的目的”的方式,可能处理优先级?或者我只需要在代码中完成这个任务?
您可以在 Interface Builder 中使用不同优先级的约束来实现此类行为。对于这两个视图(“公司徽标”和“登录视图”),您需要设置“容器中的垂直中心”和“容器中的水平中心”约束,并降低优先级。
接下来,您需要使用具有“小于或等于”等关系的规则来定义“垂直空间”和“水平空间”约束。
我仅使用 Interface Builder 就实现了这种行为。
-
演示此操作的截屏视频.
-
Github 上的源代码(我已在仅限 iPhone 的情节提要中进行了设置,但 iPad 的想法类似)。
您还可以使用不同的优先级将“小于或等于”与“大于或等于”结合起来以获得最佳结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)