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

时间:2015-08-11 05:55:34

标签: ios objective-c uiview constraints viewdidload

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

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

这让我一直都很疯狂。

由于这个问题,我经常放弃用故事板设计的整个想法。

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

我已经尝试过awakeFromNib()。

2 个答案:

答案 0 :(得分:3)

viewDidLoad 中调用约束不会对视图应用。约束将应用于 viewDidLayoutSubviews 。但是通过我的工作,我发现 viewDidLayoutSubviews 在ios8中运行良好,但对于iOS7并不总是倒退。    所以我的建议是,如果你的应用程序是ios8以后使用 viewDidLayoutSubviews ,如果不是我建议隐藏viewDidLoad中的视图并在viewWillAppear中取消隐藏它,只有在应用了约束之后。在加载屏幕时会给你带来一点额外的延迟但是约束变化对用户来说是透明的。从用户的角度来看,这是非常好的。

答案 1 :(得分:0)

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