我使用了navigationItem的自定义字体;当我转到另一个视图控制器时,新呈现的视图控制器上的后退按钮在左侧被切断。我在第一个视图控制器上尝试了setTitlePositionAdjustment(_ adjustment: UIOffset, for barMetrics: UIBarMetrics)
,然后再做了segue,但它没有替换按钮:
和
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Show Contents" {
if let viewController = segue.destination as? ContentsTableViewController {
viewController.navigationItem.backBarButtonItem?.setTitlePositionAdjustment(UIOffsetMake(10, 0), for: .default)
}
}
}
答案 0 :(得分:0)
使用此代码:
override func viewDidLoad() {
super.viewDidLoad()
let backBarButtonItem = UIBarButtonItem(title: "خانه", style: .plain, target: nil, action: nil)
backBarButtonItem.setTitleTextAttributes([.font : UIFont(name: "B Koodak", size: 32)!], for: .normal)
navigationItem.backBarButtonItem = backBarButtonItem
}
答案 1 :(得分:0)
使用自定义字体时遇到了此问题,我将导航栏隐藏在父视图中并在子视图中显示(在viewWillAppear(_:)
中)。弄清楚此操作中的某件事导致按钮标签绘制得太窄,我尝试在子视图控制器中的导航栏(UIKit
和setNeedsLayout()
)上调用各种setNeedsDisplay()
重绘方法'viewDidLoad()
方法,但无济于事。如OP所写,通过减小字体大小,我能够正确绘制标签。
通过将backBarButtonItem
属性设置为以UIBarButtonItem
为标题的"Back"
的新实例,我最终能够以正确的尺寸正确绘制它(在我的父母中视图控制器)。这可能就是为什么它在接受的答案中起作用的原因。这似乎是UIKit
中的错误,因为我认为隐藏和显示导航栏不会导致此行为。