当前位置: 首页 > 面试题库 >

将rootViewController与动画交换?

韦辰钊
2023-03-14
问题内容

我试图用标签栏交换到另一个根视图控制器;通过应用程序委托,我想添加过渡动画。默认情况下,它将仅显示视图而没有任何动画。

let tabBar = self.instantiateViewController(storyBoard: "Main", viewControllerID: "MainTabbar")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window = UIWindow(frame: UIScreen.main.bounds)
appDelegate.window?.rootViewController = tabBar
appDelegate.window?.makeKeyAndVisible()

这就是我换成另一个rootview控制器的方式。


问题答案:

您可以使用UIView.transition(with: view)替换rootViewControllerUIWindow

guard let window = UIApplication.shared.keyWindow else {
    return
}

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "MainTabbar")

// Set the new rootViewController of the window.
// Calling "UIView.transition" below will animate the swap.
window.rootViewController = vc

// A mask of options indicating how you want to perform the animations.
let options: UIView.AnimationOptions = .transitionCrossDissolve

// The duration of the transition animation, measured in seconds.
let duration: TimeInterval = 0.3

// Creates a transition animation.
// Though `animations` is optional, the documentation tells us that it must not be nil. ¯\_(ツ)_/¯
UIView.transition(with: window, duration: duration, options: options, animations: {}, completion:
{ completed in
    // maybe do something on completion here
})


 类似资料:
  • UIView animateWithDuration的文档称,在动画期间,所有用户交互都被阻止。但我想知道它是否也会在预动画延迟期间阻塞。 文件上说 “在动画制作过程中,将暂时禁用正在制作动画的视图的用户交互。(在iOS 5之前,将禁用整个应用程序的用户交互。)如果希望用户能够与视图交互,请在选项参数中包含UIViewAnimationOptionAllowUserInteraction常量。"

  • 基础交错动画 Stagger允许你通过 跟随和重叠动作 为多个元素设置动画。 anime.stagger(value, options) Arguments Type Info Required Value Number, String, Array 操纵值 Yes Options Object 交错参数 No anime({ targets: '.basic-staggering-demo

  • 响应式交互能让用户信任,并且吸引他们。 当用户操作一个美观且符合常理的应用时,他们会感到满意甚至很高兴。那是一种经过深思熟虑、有目的、非随机的而且可以带有轻微异想天开但不会让人分心的交互。 在 material design 中,应用是响应式的并且渴望用户操作的: 触摸,语音,键盘及鼠标作为首要考虑的输入方式。 虽然 UI 元素是有形的,但是他们被限制在屏幕里面(电脑或者移动设备的屏幕),视觉元素

  • 问题内容: 升级Xcode之后,我的应用程序的关键部分已停止工作。 当我的应用启动时,我运行一个函数来检查布尔标志并设置正确的rootViewController。 但是我一直用来设置它的代码现在已经停止工作 具体来说,当应用获得倒数第二行时,它会因错误而崩溃。 上面的函数在一个名为的类中,我正在从内部调用该函数,如下所示: 非常感谢任何有关如何设置根控制器的解决方案或修复方法。 谢谢! 问题答案

  • 我最近发现了一些UIView动画代码,并注意到它没有正确使用animateKeyframesWithDuration:delay:options:animations:completion:方法,并且一直在尝试修复它,但由于某些原因,动画不完全相同。 以下是我找到的代码: 这有两个问题: 应该真正使用关键帧动画,而不是在完成块中嵌套动画 使用animateKeyframesWithDuration

  • 问题内容: 因此,我了解了如何同时执行CSS3过渡和动画。我用谷歌搜索的不清楚是什么时候使用它。 例如,如果我想使球弹跳,很明显,动画是必经之路。我可以提供关键帧,而浏览器将做中间帧,并且我将获得一个不错的动画。 然而,在某些情况下,无论哪种方式都可以达到上述效果。一个简单而常见的示例是实现Facebook风格的滑动抽屉菜单: 可以通过以下过渡来实现此效果: 或者,通过类似这样的动画: 使用HTM