繁体   English   中英

如何将Modal Popup的大小更改为等于其Superview的大小?

[英]How to change Modal Popup size to equal to its superview size?

我在情节提要中创建了一个模式弹出窗口,以便单击图像时会弹出该图像,但是可以调整大小。 我想要的是使弹出窗口等于超级视图的大小(以编程方式)。

如果需要,我将提供其他代码。

@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()
    }

}

}

任何帮助将不胜感激。

终于找到答案了。

代替:

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)

所有解决问题的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM