2017-07-26 90 views
0

所以我得到这个UIScrollView的是有高度限制常数,且宽度约束到根视图的宽度,但是当我在viewWillAppear中()设置断点,我发现,UIScrollView的宽度并没有改变,在所有的不管是什么样的手机(5s,7和7 Plus)我测试过。为什么UIScrollView的框架不会受到约束的影响?

我读的UIScrollView并没有受到限制,但为什么是这样的话?

StoryBoard Variable Watcher *请注意,我在iPhoneSE运行,但imageScrollView的宽度为414,这是iPhone 7加屏幕的宽度。

+1

你读什么是不正确的。显示一些代码或故事板。另外,设置滚动视图的背景颜色以了解它的布局方式。 – Fogmeister

+0

嘿!我上传了故事板和可变观察者的截图。 –

回答

0

尽我的理解,会发生什么情况是,该视图但是加载,那么新的容器视图尺寸应用,此后约束重新计算和子视图进行重新布局,当每个那些步骤发生有点不透明。根据我的经验,当调用viewDidAppear()时,正确的大小已到位,但在viewDidLoad()viewWillAppear()中,您将从Interface Builder中获得“设计时”大小。 didLayoutSubviews()也是一种可能性,但请记住它可以在视图控制器的整个生命周期中多次调用。

“正确的”方法是在整个过程中使用Autolayout(使用Autolayout和UIScrollView有一个Technical Note),但是它可能有点乏味。对于不太患者,人们可以通过在容器视图中设置一框架和调用updateConstraintsIfNeeded()和layoutIfNeeded(申请尺寸),也可以猜测基于所述一个UIWindow尺寸元件的最终尺寸(参见UIView.window或UIApplication.keyWindow)父视图控制器视图的界限。

祝你好运!

+0

谢谢!有空的时候我会看你的答案。 –

相关问题