微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

快速地,如何使用.crossDissolve动画执行连拍?

如何解决快速地,如何使用.crossDissolve动画执行连拍?

在我的第一个视图控制器中,我尝试在使用alpha方法制作动画后执行segue。 我在segue中指定modalTransitionStyle为.crossdissolve 但他没有这样做。他的表现就像推法一样。

这两个viewControllers在navigationController下,并且在同一情节提要中,但是在两个不同的视图中。

这是我的代码

import UIKit

class AnimationPageDeDemarrageController: UIViewController {
    
    var personne = PersonneController()
    
    @IBOutlet var slogan: UILabel!
    @IBOutlet var vueDuSlogan: UIView!
    @IBOutlet var vueBlancheDuSlogan: UIView!
    @IBOutlet var vueBlanche: UIView!
    @IBOutlet var logo: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.vueBlanche.alpha = 0
        self.slogan.alpha = 0
        self.vueDuSlogan.alpha = 0
        self.vueBlancheDuSlogan.alpha = 0
        navigationController?.setNavigationBarHidden(true,animated: false)
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.faireApparaitreLaPage()
    }
    
    override func viewWilldisappear(_ animated: Bool) {
        super.viewWilldisappear(animated)
        navigationController?.setNavigationBarHidden(false,animated: true)
    }
    
    private func faireApparaitreLaPage() {
        UIView.animate(withDuration: 1,delay: 0,animations: {
            self.vueBlanche.alpha = 1.0
            self.slogan.alpha = 1
            self.vueDuSlogan.alpha = 1
            self.vueBlancheDuSlogan.alpha = 1
        },completion: {
            done in
            if done {
                self.segueVersMenuController()
            }
        })
    }
    
    // segue vers MenuController
    private func segueVersMenuController() {
        //Segue vers la page menuViewController
          let menuViewController = storyboard?.instantiateViewController(identifier: "MenuViewController") as? MenuViewController
        menuViewController?.modalTransitionStyle = .crossdissolve
        menuViewController?.modalPresentationStyle = .fullScreen
            menuViewController?.personne = personne

         self.navigationController?.pushViewController(menuViewController!,animated: true)
    }

}

我尝试了另一种类型的segue,并且应用程序崩溃了。 这是代码

    private func presentMenuViewController() {
        let menuViewController = MenuViewController()
        menuViewController.personne = personne
        menuViewController.modalPresentationStyle = .fullScreen
        menuViewController.modalTransitionStyle = .crossdissolve
        present(menuViewController,animated: true)
    }

解决方法

.modalTransitionStyle属性仅用于模式过渡。推送不是模式转换。

您将需要创建UIStoryboardSegue的自定义子类。

,

我找到了问题的答案,这是代替segueVersMenuController()使用的函数代码:

private func fadeTransition() {
        let transition: CATransition = CATransition()
        transition.duration = 1.75
        transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut)
        transition.type = CATransitionType.fade
        self.navigationController!.view.layer.add(transition,forKey: nil)

        let menuViewController = self.storyboard?.instantiateViewController(withIdentifier: "MenuViewController") as! MenuViewController
        menuViewController.personne = self.personne
        self.navigationController?.pushViewController(menuViewController,animated: false)
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。