2017-05-08 30 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) 

所有這一切解決了這個問題。