如何在运行时期间为故事板中创建的UIView获取正确的大小

时间:2015-07-14 06:53:00

标签: ios uiview uiscrollview storyboard size

我使用故事板创建了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对象来更新其大小?

1 个答案:

答案 0 :(得分:1)

听起来你太早检查尺寸了。

尝试将代码置于viewDidLayoutSubviews方法中,看看它是否会发生变化。