使用自动布局保持正确的 view.frame.origin.y
Posted
技术标签:
【中文标题】使用自动布局保持正确的 view.frame.origin.y【英文标题】:Keep correct view.frame.origin.y with autolayout 【发布时间】:2014-07-17 22:53:55 【问题描述】:我正在尝试在我的项目中始终使用自动布局,但我无法理解它。
这里我有一个 UIView
有 2 个子视图:
我希望它在retina 4 inch
中保持这种状态,但我想在3.5 inch
屏幕上将view.frame.origin.y
向上移动40 或60 点。有没有办法使用标准的自动布局约束来做到这一点?
显然,这里不能选择不使用自动布局。
我尝试上下设置不同的约束,但它们似乎无法让我完全控制框架的 y 值。
【问题讨论】:
【参考方案1】:我相信您需要使用UIViewController
's topLayoutGuide
。请查看Apple's Technical Q&A QA1797 "Preventing the Status Bar from Covering Your Views",希望这正是您所需要的。
更新
很抱歉没有仔细阅读您的问题。我认为如果没有运行时计算,您的视图不能将 y 坐标移动某个任意值。但是你可以通过结合viewDidLoad
方法中的2个约束和修改约束值来实现你所需要的:
-
按住 Control 从标签(需要在 3.5 英寸屏幕上向上移动)拖动到
bottomLayoutGuide
并设置垂直间距限制。
按住 Control 从您的标签拖动到自身并设置标签的高度限制。
这让您在 3.5 英寸屏幕上比 4 英寸屏幕偏移 88 像素。在viewDidLoad
中,您可以检测设备是否有 3.5" 屏幕并将第一个约束值增加 20/40/60。
这不是一个优雅的解决方案,但希望它有所帮助。
【讨论】:
不,问题与状态栏无关。只需要一种可靠的方法来使用自动布局将视图 20/40/60 点向上以上是关于使用自动布局保持正确的 view.frame.origin.y的主要内容,如果未能解决你的问题,请参考以下文章