推送弹出导航堆栈后 UIBarButtonItem 字体粗细发生变化
UIBarButtonItem font weight changes after push pop of navigation stack
我有一个 UIBarButtonItem,"Done" - 在故事板 IB 中为 ViewController A 创建。
ViewController A 是导航栈的根视图控制器。
如果我将视图控制器 B 推入导航堆栈,然后再次将其弹出。完成按钮的字体粗细发生变化。
A.viewWillAppear(..) 中应用了“完成”按钮的字体颜色,看起来很像
doneButton.tintColor = [CMPThemes navigationBarItemColour]; // it's a blue
我已经从应用程序中删除了所有外观代理代码(因为有
不止一种导航样式 bars/buttons/titles 出现在
应用程序)所以我不是在寻找只能通过
外观代理...
我在调试视图层次结构中检查了“完成”按钮
转换前后相同的实例
我试过在弹出后重新应用色调
我没有在过程中的任何地方应用字体粗细
另外,在我看来,字体和字体大小似乎没有变化
过程。
在ViewController一个
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
...
self.navigationController?.pushViewController(vcB, animated: true)
...
中ViewController乙
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 以保持清晰度)。
如果有人发现了这个问题并能指出正确的方向进行修复,那就太好了!
我遇到了同样的问题。
我有后退按钮自定义图像,当我按下视图控制器并按下时,它会变粗(默认图像)
所以我在情节提要中所做的是将单个空白 space 应用到 后退按钮
第 1 步
--> 点击导航项
步骤 2
--> 把空白 space 放在后面的 Button
现在你可以观察到
导航项有一项空白
我发现了问题。应用的色调不是问题。我认为,最初当它从情节提要中加载完成按钮时,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
}
希望对您有所帮助!
我有一个 UIBarButtonItem,"Done" - 在故事板 IB 中为 ViewController A 创建。
ViewController A 是导航栈的根视图控制器。
如果我将视图控制器 B 推入导航堆栈,然后再次将其弹出。完成按钮的字体粗细发生变化。
A.viewWillAppear(..) 中应用了“完成”按钮的字体颜色,看起来很像
doneButton.tintColor = [CMPThemes navigationBarItemColour]; // it's a blue
我已经从应用程序中删除了所有外观代理代码(因为有 不止一种导航样式 bars/buttons/titles 出现在 应用程序)所以我不是在寻找只能通过 外观代理...
我在调试视图层次结构中检查了“完成”按钮 转换前后相同的实例
我试过在弹出后重新应用色调
我没有在过程中的任何地方应用字体粗细
另外,在我看来,字体和字体大小似乎没有变化 过程。
在ViewController一个
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
...
self.navigationController?.pushViewController(vcB, animated: true)
...
中ViewController乙
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 以保持清晰度)。
如果有人发现了这个问题并能指出正确的方向进行修复,那就太好了!
我遇到了同样的问题。
我有后退按钮自定义图像,当我按下视图控制器并按下时,它会变粗(默认图像)
所以我在情节提要中所做的是将单个空白 space 应用到 后退按钮
第 1 步
--> 点击导航项
步骤 2
--> 把空白 space 放在后面的 Button
现在你可以观察到
导航项有一项空白
我发现了问题。应用的色调不是问题。我认为,最初当它从情节提要中加载完成按钮时,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
}
希望对您有所帮助!