我使用故事板创建了UIView
,设置了约束。当我运行应用程序时,界面看起来很好。视图覆盖了整个屏幕(我将背景颜色设置为黑色,以便更容易看到正在进行的操作)。
http://contentlibrary.sinaapp.com/View%20from%20Storyboard.png(对不起,我必须像这样链接图片,但系统说我需要至少10个代表来发布图片。)
但是,当我尝试使用myView.bounds.size
获取该视图的大小时。我得到了(600,580),这正是故事板尺寸检查员出现的尺寸。
我在代码中创建了另一个UIView
var myView = UIView(frame: CGRect(x: 0, y: 20, width: 600, height: 580))
并将其作为子视图添加到顶级视图中。它出现了,但它并没有覆盖整个屏幕,就像我在故事板中创建的视图一样。我在故事板和代码中创建的视图在.bounds.size
中具有相同的值,但它们在屏幕上的大小似乎非常不同。 (此图片是在代码中创建的视图。请看屏幕底部有空白区域。)
http://contentlibrary.sinaapp.com/View%20from%20Code.png
另一个有趣的事情是,如果我用UIView
替换上面的UIScrollView
,滚动视图缩放后,它将更新为正确的大小。
我添加UIScrollView
的方式与使用情节提要添加UIView
的方式相同。我试图在委托方法scrollViewDidEndZooming:withView:atScale:
中打印它的大小。它说(375.0,647.0),这是一个覆盖iPhone 6整个屏幕的视图的正确屏幕尺寸。
从这一点来看,似乎故事板中出现的视图不会自动更新为正确的屏幕尺寸。
那么如何在故事板中创建一个UIView对象来更新其大小?
答案 0 :(得分:1)
听起来你太早检查尺寸了。
尝试将代码置于viewDidLayoutSubviews
方法中,看看它是否会发生变化。