如何在运行时获得故事板中创建的 UIView 的正确大小
How can I get the correct sizes for UIViews created in storyboard during runtime
我使用故事板创建了一个 UIView
,设置了约束。当我 运行 应用程序时,界面看起来不错。视图按预期覆盖了整个屏幕(我将背景颜色设置为黑色,以便更容易看到发生了什么)。
http://contentlibrary.sinaapp.com/View%20from%20Storyboard.png(很抱歉,我必须这样 link 图片,但系统说我至少需要 10 次 post 图片。)
但是,当我尝试使用 myView.bounds.size
获取该视图的大小时。我得到 (600, 580),这正是故事板的大小检查器中显示的大小。
我在代码中创建了另一个 UIView
var myView = UIView(frame: CGRect(x: 0, y: 20, width: 600, height: 580))
并将其作为子视图添加到顶层视图。它出现了,但它并没有像我在情节提要中创建的视图那样覆盖整个屏幕。我在故事板和代码中创建的视图在 .bounds.size
中具有相同的值,但它们在屏幕上的大小似乎大不相同。 (这张图是代码创建的视图,看到屏幕下方有白色的space。)
http://contentlibrary.sinaapp.com/View%20from%20Code.png
另一个有趣的事情是,如果我用 UIScrollView
替换上面的 UIView
,在滚动视图缩放后,它会更新到正确的大小。
我添加 UIScrollView
的方式与使用故事板添加 UIView
的方式相同。我试图在委托方法 scrollViewDidEndZooming:withView:atScale:
中打印它的大小。它显示 (375.0, 647.0),这是覆盖 iPhone 6.
上整个屏幕的视图的正确屏幕尺寸
由此看来,故事板中的视图似乎不会自动更新为正确的屏幕尺寸。
那么如何让故事板中创建的 UIView 对象更新其大小?
听起来您过早地检查尺寸。
尝试将您的代码放入 viewDidLayoutSubviews
方法中,看看它是否会发生变化。
我使用故事板创建了一个 UIView
,设置了约束。当我 运行 应用程序时,界面看起来不错。视图按预期覆盖了整个屏幕(我将背景颜色设置为黑色,以便更容易看到发生了什么)。
http://contentlibrary.sinaapp.com/View%20from%20Storyboard.png(很抱歉,我必须这样 link 图片,但系统说我至少需要 10 次 post 图片。)
但是,当我尝试使用 myView.bounds.size
获取该视图的大小时。我得到 (600, 580),这正是故事板的大小检查器中显示的大小。
我在代码中创建了另一个 UIView
var myView = UIView(frame: CGRect(x: 0, y: 20, width: 600, height: 580))
并将其作为子视图添加到顶层视图。它出现了,但它并没有像我在情节提要中创建的视图那样覆盖整个屏幕。我在故事板和代码中创建的视图在 .bounds.size
中具有相同的值,但它们在屏幕上的大小似乎大不相同。 (这张图是代码创建的视图,看到屏幕下方有白色的space。)
http://contentlibrary.sinaapp.com/View%20from%20Code.png
另一个有趣的事情是,如果我用 UIScrollView
替换上面的 UIView
,在滚动视图缩放后,它会更新到正确的大小。
我添加 UIScrollView
的方式与使用故事板添加 UIView
的方式相同。我试图在委托方法 scrollViewDidEndZooming:withView:atScale:
中打印它的大小。它显示 (375.0, 647.0),这是覆盖 iPhone 6.
由此看来,故事板中的视图似乎不会自动更新为正确的屏幕尺寸。
那么如何让故事板中创建的 UIView 对象更新其大小?
听起来您过早地检查尺寸。
尝试将您的代码放入 viewDidLayoutSubviews
方法中,看看它是否会发生变化。