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是的,我想要这个解决方案吗?对我有用@拉维:很高兴听到这个