【问题标题】:RootViewController transition effect does not workRootViewController 过渡效果不起作用
【发布时间】:2021-09-30 08:22:07
【问题描述】:
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let protectionVC = storyboard.instantiateViewController(identifier: "PrivacyProtectionViewController")
    
    guard let windowScene = self.window?.windowScene else {
        return
    }
    
    privacyProtectionWindow = UIWindow(windowScene: windowScene)
    privacyProtectionWindow?.rootViewController = protectionVC
    UIView.transition(with: privacyProtectionWindow!, duration: 1.2, options: .transitionCrossDissolve, animations: nil, completion: nil)
    privacyProtectionWindow?.windowLevel = .alert + 1
    privacyProtectionWindow?.makeKeyAndVisible()

当我把这个放到 SceneDelegate.swift 中的 sceneWillResignActive 函数中时, 它根本不会影响我的过渡风格。

你知道为什么它不起作用吗?!

【问题讨论】:

  • 您能否通过将代码放在 sceneWillResignActive 上来说明您的问题以及您想要实现的目标。您知道何时调用该方法

标签: ios swift uiviewanimation uiscenedelegate


【解决方案1】:

UIView.transition 方法将不起作用,因为您正在为窗口设置动画,而不是在屏幕上查看控制器的视图。您的动画持续时间(1.2 秒)也太长了。

当用户退出当前场景时,iOS 动画的出现速度超过 1 秒。在应用程序之间切换时您可能会看到它,但在移动到主屏幕时动画几乎会立即出现。

考虑到所有这些因素,您也许可以使用以下代码获得所需的结果。

privacyProtectionWindow = UIWindow(windowScene: windowScene)
privacyProtectionWindow?.rootViewController = protectionVC

privacyProtectionWindow?.windowLevel = UIWindow.Level.alert
privacyProtectionWindow?.makeKeyAndVisible()

// New animation code
protectionVC.view.alpha = 0.0
UIView.animate(withDuration: 0.2, delay: 0, options: [.curveEaseOut]) {
    protectionVC.view.alpha = 1.0
}

此外,为了更加流畅,您可以在场景再次激活时添加动画。

func sceneDidBecomeActive(_ scene: UIScene) {
    UIView.animate(withDuration: 0.2) {
        self.privacyProtectionWindow?.rootViewController!.view.alpha = 0.0
    } completion: { (completed) in
        if completed{
            self.privacyProtectionWindow = nil
            self.window?.makeKeyAndVisible()
        }
    }
}

alpha 值的动画改变UIView 不透明度。通过UIView.transition 方法,它将为您提供您想要的效果。

【讨论】:

  • 嘿……你从哪里学来的?!它有效……
猜你喜欢
  • 2018-06-29
  • 2018-01-16
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2012-08-09
  • 2014-03-11
相关资源
最近更新 更多