如何使用自动布局从 IB 访问正确的宽度值
How to access correct width value from IB with Autolayout
我有一些奇怪的问题。
我有一个UIViewController
,里面只有1个UIView
(我叫它containerView)。 UIView
应与 UIViewController
.
具有相同的宽度
所以我将 UIView
和 UIViewController
之间的 Leading 和 Trailing Constraints 设置为 0。在运行时一切正常,但是,如何在运行时访问实际宽度?我试过:
self.containerView.frame.size.width
当然,框架不适用于 autolayout
,我只有 600.0f 的宽度,这是 Interface Builder 的标准宽度!
我也尝试设置一个固定的约束宽度,但这也没有意义,因为 iPhone
的屏幕宽度与 iPad
不同。
关于如何在运行时访问 UIVIew
的宽度的任何想法。
PS:如你所见,我使用 Interface Builder
、Size Classes
和 Autolayout
!
尝试获取 viewDidLayoutSubviews
中的宽度
-(void)viewDidLayoutSubviews
{
NSLog(@"%f", self.containerView.frame.size.width);
}
并且因为你的 UIView
有 0 space 到所有屏幕边缘,所以 UIView
的宽度将与屏幕尺寸相同,所以你可以这样得到它:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
我有一些奇怪的问题。
我有一个UIViewController
,里面只有1个UIView
(我叫它containerView)。 UIView
应与 UIViewController
.
所以我将 UIView
和 UIViewController
之间的 Leading 和 Trailing Constraints 设置为 0。在运行时一切正常,但是,如何在运行时访问实际宽度?我试过:
self.containerView.frame.size.width
当然,框架不适用于 autolayout
,我只有 600.0f 的宽度,这是 Interface Builder 的标准宽度!
我也尝试设置一个固定的约束宽度,但这也没有意义,因为 iPhone
的屏幕宽度与 iPad
不同。
关于如何在运行时访问 UIVIew
的宽度的任何想法。
PS:如你所见,我使用 Interface Builder
、Size Classes
和 Autolayout
!
尝试获取 viewDidLayoutSubviews
中的宽度
-(void)viewDidLayoutSubviews
{
NSLog(@"%f", self.containerView.frame.size.width);
}
并且因为你的 UIView
有 0 space 到所有屏幕边缘,所以 UIView
的宽度将与屏幕尺寸相同,所以你可以这样得到它:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;