iOS:后退按钮标签被自定义字体切断

时间:2018-05-14 10:45:20

标签: ios swift uinavigationbar

我使用了navigationItem的自定义字体;当我转到另一个视图控制器时,新呈现的视图控制器上的后退按钮在左侧被切断。我在第一个视图控制器上尝试了setTitlePositionAdjustment(_ adjustment: UIOffset, for barMetrics: UIBarMetrics),然后再做了segue,但它没有替换按钮: enter image description here

enter image description here

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)

        }
    }
}

2 个答案:

答案 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
}

我得到以下内容:enter image description here

答案 1 :(得分:0)

使用自定义字体时遇到了此问题,我将导航栏隐藏在父视图中并在子视图中显示(在viewWillAppear(_:)中)。弄清楚此操作中的某件事导致按钮标签绘制得太窄,我尝试在子视图控制器中的导航栏(UIKitsetNeedsLayout())上调用各种setNeedsDisplay()重绘方法'viewDidLoad()方法,但无济于事。如OP所写,通过减小字体大小,我能够正确绘制标签。

通过将backBarButtonItem属性设置为以UIBarButtonItem为标题的"Back"的新实例,我最终能够以正确的尺寸正确绘制它(在我的父母中视图控制器)。这可能就是为什么它在接受的答案中起作用的原因。这似乎是UIKit中的错误,因为我认为隐藏和显示导航栏不会导致此行为。