ios swift:在不同VCs之间更改导航栏标题字体时出现延迟

ios swift:在不同VCs之间更改导航栏标题字体时出现延迟,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,在VCs之间切换导航栏标题字体时会有一些延迟,请提供帮助 在mainVC上,我将viewDidLoad中的导航栏标题字体设置为: self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Billabong", size: 27)!, NSForegroundColorAttributeName: UIColor.whiteColor()] 并且,要在以下

在VCs之间切换导航栏标题字体时会有一些延迟,请提供帮助

在mainVC上,我将viewDidLoad中的导航栏标题字体设置为:

self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Billabong", size: 27)!, NSForegroundColorAttributeName: UIColor.whiteColor()]
并且,要在以下其他VCs上切换回正常字体,我将mainVC视图上的字体更改回正常将消失为:

self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Medium", size: 17)!, NSForegroundColorAttributeName: UIColor.whiteColor()]
到目前为止,一切都很好,新VC显示的原始字体也很好,但是当返回到主VC时,字体更改会有些滞后。我这样做的方式是使用视图将从显示的新VC中消失,但是当它返回到主VC时,它会显示标题的一半,新字体后跟。。。在短暂的延迟后,它会显示标题的其余部分(例如“CoolTi…”,然后是“CoolTitle”)

我试过在mainVC上使用ViewWillDisplay,同样的情况也发生了,也试过在mainVC上使用ViewDidDisplay,字体更改的滞后情况更糟。不知道如何切换回其他字体没有滞后,有什么想法吗?谢谢



[已解决]谢谢@warrenm: 将
navigationItem.titleView
用于主VC标题,在VCs之间切换字体时无延迟 代码:


这感觉像是一个UIKit错误,原因如下:如果推式视图控制器的标题比主视图控制器的标题宽,那么它似乎可以工作。只有当次要VC的标题较窄时,主VC的标题才会在转换过程中被截断


对此,有很多可能的解决方法,但我建议明确地将每个VC导航项的
titleView
属性设置为具有属性字符串的适当配置的
UILabel
。在本例中,您将导航项的
title
属性保留为空。然后,您可能希望使用适当的标题配置每个导航项的
backBarButtonItem
(否则,您的后退按钮将具有通用标题“后退”)。

嘿,沃伦!我无法让标题视图显示任何内容:(错误发布,键入更多信息…需要在
UILabel
上使用
sizeToFit()
,最后显示出来,效果很好!在VCs之间切换字体时没有延迟。谢谢
let coolTitle = UILabel()
coolTitle.attributedText = NSAttributedString(string: "coolTitle", attributes: [NSFontAttributeName: UIFont(name: "Billabong", size: 27)!, NSForegroundColorAttributeName: UIColor.whiteColor()])
coolTitle.sizeToFit()
navigationItem.titleView = coolTitle