导航栏标题字体不会在正确的时间刷新

时间:2018-03-16 22:52:00

标签: ios swift uinavigationcontroller uinavigationbar

我有一个带有少量视图控制器的导航控制器 - 让我们称之为ABC,其中每个控制器都会在导航流上调用另一个({1}是根,A位于堆栈顶部)。每个导航栏都有相同的标题属性(C),但titleTextAttributes除外,它们具有不同的字体。我在C()函数中更改了它:

viewDidLoad

当我从视图控制器C返回到B时,我设置了字体的先前值:

override func viewDidLoad() {
    super.viewDidLoad()
    primaryFont = navigationController?.navigationBar.titleTextAttributes?[NSAttributedStringKey.font] as? UIFont

    if let font: UIFont = UIFont.get(size: .small, family: .systemFont, style: .regular) {
        navigationController?.navigationBar.titleTextAttributes![NSAttributedStringKey.font] = font
    }
}

上面的代码看起来很好,但实际上视图控制器override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) if let font = primaryFont { navigationController?.navigationBar.titleTextAttributes[NSAttributedStringKey.font] = font } } 的标题字体与B相同(不应该发生)。当我回到C时,它已经具有正确的字体(主要字体),之后当我再次访问A时,它也具有正确的字体。

虽然调试所有字体值都是正确的,但似乎有一些UI刷新问题(?)

总结:我想仅为视图控制器B更改标题字体而我无法实现它

你知道为什么会发生这种情况以及如何解决这个问题吗?

更新:当我在中间C> B'> A> B中添加另一个视图控制器B'时。正确的字体位于CA上。当我从B

回来时,B'有错误

0 个答案:

没有答案