如何更改背面导航栏的字体大小?

时间:2017-06-01 11:21:14

标签: ios swift uinavigationcontroller segue

好的,这是一个让我感到沮丧的问题。我在导航控制器中有两个屏幕,一个条形需要是一个大字体(bigFontVC),一个需要是一个小字体(smallFontVC)。

我使用segue从bigFontVC转到smallFontVC。 smallFontVC的viewDidLoad是:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.setToNormalFont() 
}

和bigFontVC的viewDidLoad是:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.setToSmallFont() 
}

调整大小从bigFontVC的segue到smallFontVC完美无缺。

现在从smallFontVC转到bigFontVC更加困难。我知道bigFontVC没有加载,所以viewDidLoad不会被调用。现在我正在努力找出将我的功能放在哪里

    self.navigationController?.setToNormalFont() 

调整BigFontVC的navBar字体大小。

问题是我首先想到的地方这个功能导致导航栏进行字体切换,但它首先显示标题的一半。例如'GAM'然后一瞬间'GAMES'。每次改变都有这个看起来不太好看。因为从bigFontVC到smallFontVC没有发生这种情况,我确信我可以让它不会发生其他事情,但那是我在寻求帮助的地方。

以下是我试图将该功能置于导致标题闪烁而不能顺利改变的地方。

在BigFontVC中有以下地方:

override func viewWillAppear(_ animated: Bool) {
     self.navigationController?.setToNormalFont()

}

在SmallFontVC中,以下地点:

override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.setToNormalFont()
}

我知道这是一个奇怪的问题,它可能是我不知道的导航控制器中更深层次的东西。我想也许以某种方式覆盖后退按钮使它执行一个segue,因为我知道有一个segue没有这个问题。任何帮助都会受到赞赏,即使只是告诉我这是不可能的。

如果有帮助,这是我的导航控制器功能:

extension UINavigationController {
    func setToNormalFont(){
        setFont(as:  UIFont(name: "futura", size: 19)!)
    }
    func setToSmallFont(){
        setFont(as:  UIFont(name: "futura", size: 16)!)
    }
    func setFont(as font: UIFont){
        let titleAttributes = [
            NSFontAttributeName: font
        ]
        self.navigationBar.titleTextAttributes = titleAttributes
    }
}

0 个答案:

没有答案