【发布时间】:2018-06-15 10:41:50
【问题描述】:
我正在尝试制作一个类似于照片应用程序的照片查看器,用户可以在其中放大和缩小特定图像。
图像最初的大小适合屏幕大小,但缩放后可以扩大以覆盖整个屏幕。
我在一个collectionView 单元格中发生了这种情况,该单元格是屏幕大小并启用了分页。在该单元格中是一个滚动视图,其故事板约束设置为顶部/底部/前导/尾随到它的超级视图。其余的发生在下面的代码中,即自定义单元格。
根据iOS 11中引入的scrollView的新行为,contentView(在我的例子中是imageView)应该在scrollView中居中使用:
imageView.centerXAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerXAnchor).isActive = true
imageView.centerYAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerYAnchor).isActive = true
但是我没有在任何地方看到它的解释,并且将这两行添加到我的代码中完全没有任何作用。
scrollView里面的imageView继续定位在左上角。
希望有人知道如何做到这一点并可以提供帮助。
import UIKit
class ImageCollectionViewCell: UICollectionViewCell, UIScrollViewDelegate {
@IBOutlet weak var scrollView: UIScrollView! {
didSet {
scrollView.delegate = self
scrollView.minimumZoomScale = 0.2
scrollView.maximumZoomScale = 2.0
scrollView.contentSize = imageView.frame.size
scrollView.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.widthAnchor.constraint(equalToConstant: 350).isActive = true
imageView.heightAnchor.constraint(equalToConstant: 350).isActive = true
imageView.centerXAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerXAnchor).isActive = true
imageView.centerYAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerYAnchor).isActive = true
}
}
var imageView = UIImageView()
var image: UIImage? {
get {
return imageView.image
}
set {
imageView.image = newValue
scrollView?.contentSize = imageView.frame.size
}
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.imageView
}
}
【问题讨论】:
-
我发现在iOS 11中不能用,见github.com/onmyway133/blog/issues/371
标签: ios swift xcode uiscrollview ios11