iOS滚动视图边界不等于超视图边界

时间:2016-11-09 22:30:33

标签: ios

我有一个UIScrollView,它有限制将它固定到superview的前沿和后缘(不是边距)。在这个滚动视图中,我有一个UIImage,我设置为最初是滚动视图的整个宽度。在iPhone 7上,这可以正常工作,图像为全宽

然而,在iPhone 7 Plus上,图像边缘与屏幕边缘之间存在间隙。滚动视图是全宽度,因为当我缩放图像时,它会直接到达边缘。

我通过设置

来获取与滚动视图宽度相匹配的图像

imageView.frame = scrollView.bounds imageView.contentMode = .scaleAspectFill

问题似乎是滚动视图边界。在iPhone 7 Plus上,滚动视图宽度报告为375,但屏幕宽度报告为414.在iPhone 7上,滚动视图宽度为375,屏幕宽度也为375。

任何人都知道这是为什么?我确定我误解了什么!

1 个答案:

答案 0 :(得分:1)

最有可能的问题是scrollView的框架在您使用它设置imageView的框架时尚未更新。

尝试将布局代码移至viewDidLayoutSubviews

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    imageView.frame = scrollView.bounds
}