我有一个包含UIScrollView
的ViewController,它使前导,尾部和底部对齐到安全区域,顶部对齐到超级视图。它只包含一个应该尽可能大的图像,并保持宽高比,适合屏幕且可缩放。我对此施加了以下约束:
将中心x和y对齐以进行预览
宽度/高度≤超级视图的宽度/高度
保持宽高比
但是现在图像开始具有其原始大小(小于ipad的宽度和高度),并且根据我放大的位置,我无法滚动到每个位置。我该如何实现? 这是我的ViewController:
class FullscreenImageViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var fullImageView: UIImageView!
@IBOutlet weak var closeButton: UIButton!
var imageSource: UIImage?
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
fullImageView.image = imageSource
}
/**
* Function used to close the presented ViewController.
* @param sender The tapped button.
*/
@IBAction func closeFullscreenViewController(_ sender: UIButton) {
self.dismiss(animated: false, completion: nil)
}
/**
* Function used to handle the zooming functionality. The ScrollView is given the view it should use for the zooming, in this case the imageView.
* @param scrollView The ScrollView.
*/
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return fullImageView
}
}
答案 0 :(得分:0)
我对它施加了以下约束:将x和y的中心对齐到视图的宽度/高度≤视图的宽度/高度,保持宽高比
这就是问题所在。您没有做任何事情来使滚动视图可滚动。
默认情况下,滚动视图不可滚动;您需要设置其内容大小,以便它知道滚动多少。滚动视图的内容大小为零,因此无法滚动。它对图像的缩放大小一无所知,因此当您缩放图像时,仍然无法滚动。
您需要将图像视图的 edges 固定到滚动视图,以便在图像视图展开时,滚动视图知道其边缘在哪里,并让您看到它们。
>