2017-05-08 13 views
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() 
    } 

} 

}

任意の助けを大幅に高く評価されるだろう。

+0

コードを入力してください。それは答えるのに役立ちます! – dfd

+0

実際に私はそれを理解しました。私は私の答えを掲示するでしょう。それは本当にシンプルなものでした(ちょっと考えました)。 –

+0

私は答えに多少の問題があるようです。画像をクリックすると、サブビューのサイズが適切に変更されますが、電話機の回転はサイジングと混乱しているようです。次回画像がクリックされたとき、適切なサイズではありませんが、それより小さくなります。 –

答えて

0

最後に答えが見つかりました。

の代わりに:

imageView.frame = self.view.frame 

私は使用していた:

imageView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height) 

をそしてanimateOut()ブロックで私はすべてのこと1

self.image.transform = CGAffineTransform(scaleX: 1, y: 1) 

に変換スケールを変更問題を修正しました。