有没有办法在 ViewDidLoad() 中获取应用约束的 UIView 框架?

Is there a way to get a constraints-applied UIView frame in ViewDidLoad()?

我需要知道故事板创建的 UIView 框架的确切位置。

问题是我在 ViewDidLoad() 中得到了一个未应用约束的框架。

这让我一直发疯。

因为这个问题,我经常会放弃整个用分镜设计的想法。

我想知道是否有一种优雅的方法可以解决这个初始化问题。

我已经尝试过 awakeFromNib()。

调用viewDidLoad时约束尚未应用。如果要检索应用了约束的视图的位置,则必须等待 viewDidLayoutSubviews 被调用。 请注意,只要视图必须更改其子视图的位置,例如当您旋转设备时,就会调用此方法。

viewDidLoad调用中约束没有作用于view.The约束作用于viewDidLayoutSubviews。但是在我的工作中,我发现 viewDidLayoutSubviews 在 ios8 中工作正常,但并不总是在 iOS7 中向后工作。 所以我的建议是,如果你的应用程序是 ios8 以后使用 viewDidLayoutSubviews 如果不是我建议隐藏 viewDidLoad 中的视图并在 viewWillAppear 中取消隐藏它,只有在已应用约束。它在加载屏幕时让你有一点额外的延迟,但约束变化变得透明 user.It 从用户的角度来看非常好。