編集:誰にも役立つように質問コードを更新しました。Swift3ズームピンチでUICollectionViewのフレームサイズを変更する方法?
私はUICollectionViewCell
にscrollView
を持っていますが、ピンチでシミュレータでズームが機能しません。私は手動でビューをズームすることによってこれを行うことができますが、ズームするためにユーザがピンチしたときにイメージビューフレームをフルサイズに変更する必要があります。今は、画面の幅に設定されたフレーム幅と画面の高さに設定されたフレームの高さで塗りつぶすサイズです。画像が正方形であるため、フレームの幅をフレームの高さに動的に変更する必要があります。あなたがピンチズームが機能するためにscrollView.contentSize
を設定する必要が
import UIKit
class MyCollectionViewCell: UICollectionViewCell, UIScrollViewDelegate {
let screenWidth = UIScreen.main.bounds.width
let activityIndicator: UIActivityIndicatorView = {
let spinner = UIActivityIndicatorView()
spinner.activityIndicatorViewStyle = .white
spinner.color = Constants.APP_SPINNER_COLOR
spinner.hidesWhenStopped = true
return spinner
}()
var zoomScrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.backgroundColor = .white
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 6.0
scrollView.clipsToBounds = true
scrollView.isUserInteractionEnabled = true
scrollView.translatesAutoresizingMaskIntoConstraints = false
return scrollView
}()
var itemImageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = .white
imageView.isUserInteractionEnabled = true
return imageView
}()
func viewForZooming(in zoomScrollView: UIScrollView) -> UIView? {
return itemImageView
}
override init(frame: CGRect) {
super.init(frame: frame)
zoomScrollView.delegate = self
contentView.backgroundColor = .white
contentView.addSubview(zoomScrollView)
zoomScrollView.addSubview(itemImageView)
itemImageView.addSubview(activityIndicator)
zoomImageView.frame = CGRect(x:0, y:0, width: screenWidth, height: screenHeight)
zoomScrollView.frame = itemImageView.frame
activityIndicator.anchorCenterXToSuperview()
activityIndicator.anchorCenterYToSuperview()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
私が2倍にスクロールビューのコンテンツサイズを設定ZoomimageViewとZoomscrollview –