代码之家  ›  专栏  ›  技术社区  ›  Damo

推送导航堆栈后,UIBarButtonItem字体权重发生变化

  •  6
  • Damo  · 技术社区  · 8 年前

    我有一个uibarbuttonite,“Done”-在故事板IB中为ViewController a创建。

    ViewController A是导航堆栈的根视图控制器。

    如果我将视图控制器B推到导航堆栈上,然后再次弹出它。“完成”按钮的字体重量会更改。

    Start Scenario - A B pushed onto stack B popped from the stack

    “完成”按钮的字体颜色应用于A.viewWillAppear(..)看起来很像

    doneButton.tintColor = [CMPThemes navigationBarItemColour]; // it's a blue
    
    • 我已经从应用程序中删除了所有外观代理代码(因为有 中是否出现了多种风格的导航栏/按钮/标题 所以我不想找一个只能通过 外观代理。。。

    • 我在调试视图层次结构中检查了“完成”按钮是否为 转换前后的同一实例

    • 我试着在流行音乐之后重新涂上色调

    • 在这个过程中,我没有在任何地方应用字体权重

    • 此外,在我看来,字体和字号在 过程。

    在ViewController A中

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        ...
        self.navigationController?.pushViewController(vcB, animated: true)
        ...
    

    在ViewController B中

    viewDidLoad() {
        ...
        let backButton = UIBarButtonItem(image: UIImage(named: "arrowLeft"), style: .plain, target: self, action: #selector(goBack))
        backButton.tintColor = CMPThemes.popoverNavigationBarItemColour()
        self.navigationItem.leftBarButtonItem  = backButton
    }
    

    故事板看起来像:(为了保持清晰,我在图像中添加了A和B)。

    enter image description here

    如果有人认识到这个问题,并能为我指出正确的方向进行修复,那就太好了!

    2 回复  |  直到 8 年前
        1
  •  1
  •   Bhavin Kansagara    8 年前

    我发现了问题。应用的色调不是问题所在。我认为,最初当它从故事板加载“完成”按钮时,doneButton样式是equals .完成 后来当你跳转到ViewControllerA时,不知怎么的,风格变了 .计划 ,因此我认为将样式设置在色调之下应该可以解决这个问题。

    尝试使用以下代码更新ViewControllerA中的viewWillAppear方法:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        doneButton.tintColor = [CMPThemes navigationBarItemColour]; // it's a blue
        doneButton.style = .done
    }
    

    希望有帮助!

        2
  •  0
  •   Prashant Tukadiya    8 年前

    我也面临同样的问题。

    我有后退按钮自定义图像,当我按下view controller并按下后退按钮时,它将变为粗体(默认图像)

    所以我在故事板中做的是将单个空格应用于 后退按钮

    第1步

    --&燃气轮机;点击导航项

    enter image description here

    第2步

    --&燃气轮机;在后退按钮上空白

    enter image description here

    现在你可以观察到

    导航项有一个空白项

    enter image description here