iOS:删除 UINavigationBar 动画

Posted

技术标签:

【中文标题】iOS:删除 UINavigationBar 动画【英文标题】:iOS: Removing UINavigationBar animation 【发布时间】:2017-03-13 21:54:57 【问题描述】:

我们的应用有一个 UINavigationBar,上面有一张图片。当我们继续(推送)到另一个屏幕然后单击后退按钮时,导航栏上的图像似乎在重新出现时从左到右进行动画处理。这有点让人分心。你怎么能删除这个后退按钮动画?

我们尝试更改 segue 动画设置,但这会更改推送动画而不是返回动画。

我们的导航条码:

    let logoImage:UIImage = UIImage(named: "ABC")!
    viewController.navigationItem.titleView = UIImageView(image: logoImage)

【问题讨论】:

如果你对 Objective-c 有一点了解,这个答案可能会对你有所帮助How to prevent animation of UINavigationBar 【参考方案1】:

很大程度上是由于这个答案https://***.com/a/8602982/47281

创建自定义导航栏并覆盖popItem

class MyNavigationBar: UINavigationBar 
    override func popItem(animated: Bool) -> UINavigationItem? 
        return super.popItem(animated: false)
    

通过情节提要输入MyNavigationBar 作为我们导航控制器的导航栏类:

请注意,我没有像链接的答案那样覆盖 NavigationController popViewControllerAnimated

【讨论】:

感谢您的回答。如果我对 pushItem 做同样的事情,为什么这不起作用?【参考方案2】:

你可以这样做:

override func viewDidLoad() 
    super.viewDidLoad()
    let logoImage: UIImage = UIImage(named: "ABC")!
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: logoImage, style: .plain, target: self, action: #selector(backBtnPressed))

然后创建一个方法来处理按钮上的点击

func backBtnPressed()
    _ = self.navigationController?.popViewController(animated: false)

【讨论】:

这不是你替换后退按钮的方式

以上是关于iOS:删除 UINavigationBar 动画的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 音乐 App 中向上滚动时实现 UINavigationBar 动画?

iOS 7(子层)AVPlayer Fullscreen animate 需要上面(覆盖)UINavigationBar

创建此自定义 UINavigationbar ios 的最佳方法

如何隐藏 UINavigationBar 和 UITabBar 动画?

删除 MFMailComposer 和 MFMessageComposer 的自定义 UINavigationBar

为啥我的 UINavigationBar 不会动画?