有没有办法在 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 从用户的角度来看非常好。
我需要知道故事板创建的 UIView 框架的确切位置。
问题是我在 ViewDidLoad() 中得到了一个未应用约束的框架。
这让我一直发疯。
因为这个问题,我经常会放弃整个用分镜设计的想法。
我想知道是否有一种优雅的方法可以解决这个初始化问题。
我已经尝试过 awakeFromNib()。
调用viewDidLoad
时约束尚未应用。如果要检索应用了约束的视图的位置,则必须等待 viewDidLayoutSubviews
被调用。
请注意,只要视图必须更改其子视图的位置,例如当您旋转设备时,就会调用此方法。
在viewDidLoad调用中约束没有作用于view.The约束作用于viewDidLayoutSubviews。但是在我的工作中,我发现 viewDidLayoutSubviews 在 ios8 中工作正常,但并不总是在 iOS7 中向后工作。 所以我的建议是,如果你的应用程序是 ios8 以后使用 viewDidLayoutSubviews 如果不是我建议隐藏 viewDidLoad 中的视图并在 viewWillAppear 中取消隐藏它,只有在已应用约束。它在加载屏幕时让你有一点额外的延迟,但约束变化变得透明 user.It 从用户的角度来看非常好。