如何更改导航控制器后退按钮的字体大小

时间:2018-02-11 15:54:02

标签: ios swift uinavigationcontroller swift4

我正在尝试更改导航控制器后退按钮的字体大小无效。

我目前在之前的视图控制器viewWillAppear中执行此操作:

 navigationController?.navigationBar.backItem?.backBarButtonItem?.setTitleTextAttributes(
    [NSAttributedStringKey.font : UIFont.systemFont(ofSize: 5)], for: .normal)

以上代码什么都没做.. 所以,有两个问题。

首先,更改后退按钮字体大小的正确方法是什么(顺便说一下,它看起来要比它应该要困难得多)。

第二,是否有一个单一的地方(比如AppDelegate)我可以进行此更改,以便影响所有视图控制器?

2 个答案:

答案 0 :(得分:3)

您可以在AppDelegate中更改它:

var i = setInterval(function() {
  if ($('[class="abcd"]').prop('disabled') == false) {
      $('[class="abcd"]').click();
      clearInterval(i);
  } else {
       console.log('button disabled');
  }
}, 100);

您可以在其中自定义导航栏按钮的字体和大小,以便在所有视图控制器中进行更改。

答案 1 :(得分:0)

我会使用UIAppearance协议来实现这一点。

  

首先,更改后退按钮字体大小的正确方法是什么(顺便说一下,它看起来要比它应该要困难得多)。

这取决于用例。如果只有一个导航栏,我只需通过这样的操作来更改其后退按钮属性。

navigationItem.leftBarButtonItem?.setTitleTextAttributes

但如果我想自己做一个自定义按钮,那么我只想在这里添加一个新按钮。

  

第二,是否有一个单一的地方(比如AppDelegate)我可以进行此更改,以便影响所有视图控制器?

如果你想改变整个条形按钮的外观,

UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: customFont], for: .normal)

我不会这样做。从长远来看,它不具有可扩展性。你肯定会有更多的导航屏幕,你不会希望它们具有相同的外观,然后,它将是一个更大的重构!