Ios 在Swift 4中显示UIViewController时,如何放大/缩小动画?

Ios 在Swift 4中显示UIViewController时,如何放大/缩小动画?,ios,swift,animation,uiviewcontroller,Ios,Swift,Animation,Uiviewcontroller,我想用放大/缩小动画从按钮单击显示ViewController,我尝试了一些代码,但对我不起作用: func btnClickView(_ sender: UIButton) { let objImagePreview = ImagePreview(nibName: "ImagePreview", bundle: nil) let transition = CATransition() transition.duration = 1

我想用放大/缩小动画从按钮单击显示
ViewController
,我尝试了一些代码,但对我不起作用:

func btnClickView(_ sender: UIButton) {
   let objImagePreview = ImagePreview(nibName: "ImagePreview", bundle: nil)
            let transition = CATransition()
            transition.duration = 1
            transition.type = kCATransitionMoveIn
            transition.subtype = kCATransitionFromTop
            transition.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut)
            view.window!.layer.add(transition, forKey: kCATransition)
            self.present(objImagePreview, animated: false, completion: nil)
}

我想设置
UIViewController
的动画,而不是
UIView
。我尝试了很多东西,但都不管用。

我希望这会有所帮助

在第一个视图控制器中,在显示目标视图控制器之前,使用
vc.modalPresentationStyle=.overCurrentContext
设置目标视图控制器,并在显示时将动画设置为false,如下所示

if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DestinationViewController") as? DestinationViewController {
            vc.modalPresentationStyle = .overCurrentContext
            self.present(vc, animated: false, completion: nil)
        }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        view.transform = CGAffineTransform(scaleX: 0.00001, y: 0.00001)
        UIView.animate(withDuration: 0.5, animations: { [weak self] in
            self?.view.transform = CGAffineTransform.identity
        })
    }

然后在DestinationViewController中,当ViewController出现时,创建如下缩放动画

if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DestinationViewController") as? DestinationViewController {
            vc.modalPresentationStyle = .overCurrentContext
            self.present(vc, animated: false, completion: nil)
        }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        view.transform = CGAffineTransform(scaleX: 0.00001, y: 0.00001)
        UIView.animate(withDuration: 0.5, animations: { [weak self] in
            self?.view.transform = CGAffineTransform.identity
        })
    }

对我来说,这个代码是有效的


简单的方法:转换属性属于UIView而不是UIViewController。当您想要为UIViewController制作动画时,这意味着它将从UIViewController.view工作,但当我呈现UIViewController时,它应该处于动画放大中,我不知道怎么做,但如果你有动画代码,请给我。你的目标是显示视图控制器中间的放大/缩小转换吗?@AhmadF是的,我想要这个解决方案吗?对我有用@拉维:很高兴听到这个