我的UIImageView
包含一个override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
imageView.image = image!
imageView.frame.size = image!.size
scrollView.contentSize = imageView.frame.size
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
let minScale = min(scaleWidth, scaleHeight)
scrollView.minimumZoomScale = minScale
scrollView.maximumZoomScale = 3.0
scrollView.zoomToRect(imageView.frame, animated: false)
}
。我正在尝试设置最小滚动工厂,以便在视图完全缩小时,可以看到整个画面并在整个屏幕上延伸。
目前我的代码似乎设置的最低值太低了。可以看到整个画面,但画面右侧有很多额外的空间。当视图出现图像可以完全移出视图时,会有太多额外空间。一旦执行了另一次缩放,许多额外空间就会消失,但图像仍然可以缩小得太小。
以下是代码:
Scroll view frame: (0.0, 0.0, 600.0, 600.0)
Scroll view content size: (1500.0, 1001.0)
Image view frame: (0.0, 0.0, 1500.0, 1001.0)
编辑:缩放前后的尺寸似乎发生了变化。
缩放前:
Scroll view frame: (0.0, 0.0, 600.0, 600.0)
Scroll view content size: (600.0, 400.4)
Image view frame: (0.0, 0.0, 600.0, 400.4)
缩放后:
{{1}}
答案 0 :(得分:1)
此问题是在viewWillAppear
中未计算自动布局约束的内容。为了解决这个问题,我将逻辑移到viewDidLayoutSubviews
。
答案 1 :(得分:0)
要计算最小缩放系数,以确保边缘周围没有多余空间,应使用max
而不是min
。
let scaleWidth = scrollView.frame.width / scrollView.contentSize.width
let scaleHeight = scrollView.frame.height / scrollView.contentSize.height
let minScale = max(scaleWidth, scaleHeight)
scrollView.minimumZoomScale = minScale