【问题标题】:UIBarButtonItem font weight changes after push pop of navigation stackUIBarButtonItem 导航堆栈推送弹出后字体粗细变化
【发布时间】:2018-04-29 00:47:04
【问题描述】:

我有一个 UIBarButtonItem,“完成” - 在 Storyboard IB 中为 ViewController A 创建。

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

如果我将视图控制器 B 推送到导航堆栈然后再次弹出它。完成按钮的字体粗细发生变化。

完成按钮的字体颜色应用在 A.viewWillAppear(..) 中,看起来很像

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

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

  • 我尝试在 pop 之后重新应用 tint 颜色

  • 我不会在流程中的任何地方应用字体粗细

  • 另外,在我看来,字体和字体大小似乎在 过程。

在 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 添加到图像中以保持清晰度)。

如果有人发现问题并能指出正确的方向来解决问题,那就太好了!

【问题讨论】:

  • 好像在 viewController B 中你有一些自定义 UI,比如后退按钮。也许在创建自定义后退按钮时,您做了一些影响完成按钮的事情。如果你能给我们一个调试仓库,这里的问题就更容易了。
  • viewController B viewWillDisappear/viewDidDisappear中有没有写代码?
  • @trungduc @muneeba 我会为你们更新问题。
  • @Damo 看起来不错,你在CMPThemes 里面做了什么特别的事情吗?
  • @trungduc 不,它只是一种颜色

标签: ios uinavigationcontroller uibarbuttonitem


【解决方案1】:

我发现了问题。应用的色调颜色不是问题。我认为,最初当它从情节提要加载完成按钮时,doneButton 样式等于 .done,后来当您弹出 ViewControllerA 时,不知何故样式更改为 .plan,所以我认为将样式设置为低于色调应该可以解决问题。

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

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

希望对你有帮助!

【讨论】:

  • 是的——这确实治好了病。干得好,ty Bhavin!
【解决方案2】:

我也遇到过同样的问题。

我有返回按钮自定义图像,当我按下视图控制器并按下它时,它会变粗(默认图像)

所以我在情节提要中所做的是将单个空白空间应用于 后退按钮

第一步

--> 点击导航项

第二步

--> 后退按钮留空

现在你可以观察到了

导航项有一个空白项

【讨论】:

  • 我试过了,但这对我的完成按钮的行为没有影响
  • @Damo 好像你换了字体,因为两种字体都不一样 能分享一下你的演示项目吗?
  • 我不能抱歉,我必须清理这篇文章以混淆客户端 - 完成按钮是一个标准 UIBarButtonItem,只有色调更改(据我所知不是字体更改)
  • @Damo 没问题我理解你的担心,现在剩下的唯一选择是项目中的全局搜索导航项并检查所有扩展检查所有子类可能是你从那里找到的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 2014-10-02
相关资源
最近更新 更多