【发布时间】:2017-11-04 13:51:07
【问题描述】:
我有一个包含多个图像的集合视图。我可以在单元格中缩放图像,但我希望它和滚动视图在点击手势时返回到其原始大小。我的点击手势将图像恢复到原来的大小,但它不在屏幕上,滚动视图保持它的缩放大小。这是我的代码:
import UIKit
class ZoomingCollectionViewCell: UICollectionViewCell, UIScrollViewDelegate {
let zoomScrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.backgroundColor = .white
scrollView.isUserInteractionEnabled = true
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 6.0
scrollView.clipsToBounds = true
return scrollView
}()
var itemImageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = .white
imageView.isUserInteractionEnabled = true
return imageView
}()
var originalSize: CGRect!
override init(frame: CGRect) {
super.init(frame: frame)
contentView.backgroundColor = .white
zoomScrollView.delegate = self
itemImageView.frame = CGRect(x: 0, y: 0, width: contentView.frame.size.width, height: contentView.frame.size.height)
zoomScrollView.frame = itemImageView.frame
originalSize = itemImageView.frame
let tap = UITapGestureRecognizer(target: self, action: #selector(tapZoomingGesture(_:)))
tap.numberOfTapsRequired = 2
zoomScrollView.addGestureRecognizer(tap)
zoomScrollView.addSubview(itemImageView)
contentView.addSubview(zoomScrollView)
}
func viewForZooming(in zoomScrollView: UIScrollView) -> UIView? {
return itemImageView
}
func tapZoomingGesture(_ sender: UIPinchGestureRecognizer) {
itemImageView.center = itemImageView.superview!.center
itemImageView.transform = .identity
zoomScrollView.frame = originalSize
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
return true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
【问题讨论】:
标签: ios swift3 uiscrollview uicollectionviewcell uiscrollviewdelegate