私は画像/ボタンを持つビューコントローラを持っています。このボタンをクリックすると、同じ画像を持つビューコントローラーのモーダルポップアップがアクティブになります。画像はUIScrollView上にあり、ズーム機能を作成しました。スクロールビューズームは、ズームされた画像全体をスクロールさせないようにします。
イメージ全体をスクロールしてズームすることができますが、その左上部分だけをズームすることができるまで、イメージをズームインして数回スクロールできます。
これは、画面を横向きに傾けてポップアップをもう一度アクティブにした後にのみ発生します。ポップアップウィンドウで画像が大きくなっているようです。
制約はすべてストーリーボードで行われます。問題が制約かコードであるかどうかはわかりません。
コード:姿勢変更時の
変数
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var zoomImageView: UIImageView!
@IBOutlet var imageView: UIView!
@IBOutlet var backgroundButton: UIButton!
画像拡大
override func viewDidLoad() {
super.viewDidLoad()
self.scrollView.minimumZoomScale = 1.0
self.scrollView.maximumZoomScale = 6.0
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.zoomImageView
}
センター画像
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
if UIDevice.current.orientation.isLandscape{
imageView.center = self.view.center
} else if UIDevice.current.orientation.isPortrait{
imageView.center = self.view.center
}
}
モーダルポップアップ
@IBAction func showImageView(_ sender: Any) {
animateIn()
}
@IBAction func closeImageView(_ sender: Any) {
animateOut()
}
func animateIn() {
self.scrollView.zoomScale = 1.0
self.view.addSubview(imageView)
imageView.center = self.view.center
imageView.transform = CGAffineTransform.init(scaleX: 1.3, y: 1.3)
imageView.alpha = 0
self.backgroundButton.alpha = 0.7
UIView.animate(withDuration: 0.4) {
self.imageView.alpha = 1
self.imageView.transform = CGAffineTransform.identity
}
}
func animateOut() {
UIView.animate(withDuration: 0.3, animations: {
self.imageView.transform = CGAffineTransform.init(scaleX: 1.3, y: 1.3)
self.imageView.alpha = 0
self.backgroundButton.alpha = 0
}, completion: nil)
}
私が唯一の問題に対する可能な関連性を持っているコードを入れました。
ご協力いただきますようお願い申し上げます。