Ios 打印视图时的定值od 375';跨不同模拟器的s bounds.width属性

Ios 打印视图时的定值od 375';跨不同模拟器的s bounds.width属性,ios,swift,xcode,uiview,autolayout,Ios,Swift,Xcode,Uiview,Autolayout,我在应用程序中遇到了一件非常奇怪的事情。我有一个视图,它的约束设置是为了将其边缘粘贴到手机的两个边缘。这个东西工作得很好,视图占据了整个屏幕,但是当我尝试打印self.bounds.width属性时,它总是返回我375.0,尽管我已经在多个设备模拟器上尝试过。谁能解释一下吗?你看到的宽度就是你故事板中视图的宽度。如果在情节提要中将设备设置为iPhone SE大小,则宽度为320 一旦针对实际设备调整了视图的大小,您将获得正确的值 试一试 viewDidAppear viewDidLayoutSu

我在应用程序中遇到了一件非常奇怪的事情。我有一个视图,它的约束设置是为了将其边缘粘贴到手机的两个边缘。这个东西工作得很好,视图占据了整个屏幕,但是当我尝试打印
self.bounds.width
属性时,它总是返回我
375.0
,尽管我已经在多个设备模拟器上尝试过。谁能解释一下吗?

你看到的宽度就是你故事板中视图的宽度。如果在情节提要中将设备设置为iPhone SE大小,则宽度为320

一旦针对实际设备调整了视图的大小,您将获得正确的值

试一试

viewDidAppear
viewDidLayoutSubviews

在尝试使用视图的任何属性之前,可以调用
layoutifneed()
方法。此方法将强制视图更新其布局

e、 g:


你是在
viewDidLoad
中这样做的吗?@AshleyMills Yes我试过了…在viewDidAppear中工作得很好…非常感谢!非常感谢…这比调用viewWillAppearYep中的方法要好得多。这是正确的做法。很高兴我能帮忙;)
override func viewDidLoad() {
    super.viewDidLoad()
    view.layoutIfNeeded()
    print(view.width) // now you will get the right size
}