0
私はストーリーボードにモーダルポップアップを作成しました。画像をクリックするとその画像のポップアップが表示されますが、サイズ変更は可能です。私が望むのは、ポップアップがスーパービューのサイズと等しくなるように(プログラム的に)です。モーダルポップアップサイズをスーパービューサイズに変更するにはどうすればよいですか?
必要に応じて追加のコードを提供します。
@IBOutlet var imageView: UIView!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var zoomImageView: UIImageView!
@IBOutlet weak var backgroundButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.setNavigationBarHidden(true, animated: false)
imageView.layer.cornerRadius = 10
imageView.layer.masksToBounds = true
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
imageView.frame = view.frame
} else if UIDevice.current.orientation.isPortrait{
imageView.center = self.view.center
imageView.frame = view.frame
}
}
@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
}) { (success:Bool) in
self.imageView.removeFromSuperview()
}
}
}
任意の助けを大幅に高く評価されるだろう。
コードを入力してください。それは答えるのに役立ちます! – dfd
実際に私はそれを理解しました。私は私の答えを掲示するでしょう。それは本当にシンプルなものでした(ちょっと考えました)。 –
私は答えに多少の問題があるようです。画像をクリックすると、サブビューのサイズが適切に変更されますが、電話機の回転はサイジングと混乱しているようです。次回画像がクリックされたとき、適切なサイズではありませんが、それより小さくなります。 –