自动调整导航栏标题放错位置

Posted

技术标签:

【中文标题】自动调整导航栏标题放错位置【英文标题】:Auto-resized navigationBar title misplaced 【发布时间】:2017-08-17 06:59:02 【问题描述】:

我有一个标题可变长度的 UINavigationBar。为了确保标题适合而不被截断,我在我的 viewDidLoad():

中实现了以下代码
let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40))
titleLabel.text = "\(petsName)'s Day"
titleLabel.font = UIFont.systemFont(ofSize: 30)
titleLabel.backgroundColor = UIColor.clear
titleLabel.textColor = UIColor.white
titleLabel.adjustsFontSizeToFitWidth = true
titleLabel.minimumScaleFactor = 0.5
self.navBar.topItem?.titleView = titleLabel

但是,因为我有一个条形按钮项,所以标题被移到了左边:

有什么方法可以实现上面的代码,但要保持导航栏内的文本中心对齐?

请帮我解决这个问题

【问题讨论】:

将宽度改为设备宽度,titleLabel 居中对齐。 【参考方案1】:

试试这个..可能有用

var view = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 40))
var label = UILabel(frame: CGRect(x: 0, y: 0, width: 150, height: 40))
label.text = "Joys Day"
label.textAlignment = .center
 label.font = UIFont.systemFont(ofSize: 30)
view.addSubview(label)
navigationItem?.titleView = view

【讨论】:

您知道为什么与具有相同字体大小的其他视图相比,此解决方案会降低我的标题文本吗?见这里:imgur.com/a/LnQzp 抱歉将您的字体设置为标签...此代码中未设置标签字体.. 是问题然后增加高度 我是。这是我与您的解决方案的完整代码:gist.github.com/MarksCode/ea14a0a984fd8384399893c2d987ebb8 但我还是想不通为什么文字低于正常水平 尝试增加字体和高度...问题。【参考方案2】:

titleLabel 宽度更改为设备宽度并将其居中对齐。试试这个:

    let deviceWidth = UIScreen.main.bounds.size.width

    let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: deviceWidth, height: 40))
    titleLabel.text = "My Test Title"
    titleLabel.font = UIFont.systemFont(ofSize: 20)
    titleLabel.backgroundColor = UIColor.clear
    titleLabel.textColor = UIColor.white
    titleLabel.adjustsFontSizeToFitWidth = true
    titleLabel.minimumScaleFactor = 0.5
    titleLabel.textAlignment = .center
    self.navigationItem.titleView = titleLabel

输出:

【讨论】:

这不会按照问题的要求在导航栏中将标签居中。

以上是关于自动调整导航栏标题放错位置的主要内容,如果未能解决你的问题,请参考以下文章

iOS 调整导航栏返回按钮的位置

iOS 调整导航栏返回按钮的位置

如何在swift 5中调整导航栏的位置?

在浮动导航栏中调整徽标大小

如何动态调整导航栏中的标题大小

导航栏折叠与位置元素冲突