自动调整导航栏标题放错位置
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
输出:
【讨论】:
这不会按照问题的要求在导航栏中将标签居中。以上是关于自动调整导航栏标题放错位置的主要内容,如果未能解决你的问题,请参考以下文章