1
所以我有一個視圖控制器上有一個圖像/按鈕。如果點擊它,它會在視圖控制器上激活一個模態彈出窗口,其上有相同的圖像。該圖像位於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)
}
我只是把有可能相關的問題代碼。
任何幫助將不勝感激。