如何使用自动布局从 IB 访问正确的宽度值

How to access correct width value from IB with Autolayout

我有一些奇怪的问题。

我有一个UIViewController,里面只有1个UIView(我叫它containerView)。 UIView 应与 UIViewController.

具有相同的宽度

所以我将 UIViewUIViewController 之间的 Leading 和 Trailing Constraints 设置为 0。在运行时一切正常,但是,如何在运行时访问实际宽度?我试过:

self.containerView.frame.size.width

当然,框架不适用于 autolayout,我只有 600.0f 的宽度,这是 Interface Builder 的标准宽度!

我也尝试设置一个固定的约束宽度,但这也没有意义,因为 iPhone 的屏幕宽度与 iPad 不同。

关于如何在运行时访问 UIVIew 的宽度的任何想法。

PS:如你所见,我使用 Interface BuilderSize ClassesAutolayout!

尝试获取 viewDidLayoutSubviews 中的宽度

-(void)viewDidLayoutSubviews 
 { 
    NSLog(@"%f", self.containerView.frame.size.width);
 }

并且因为你的 UIView 有 0 space 到所有屏幕边缘,所以 UIView 的宽度将与屏幕尺寸相同,所以你可以这样得到它:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;