手动设置导航项的 titleView 未垂直对齐
manually setting titleView of navigationItem is not alligned vertically
我在 UIViewController
扩展中使用这个函数来添加一个标题来调整字体以适应宽度。
extesion UIViewController {
func setTitleDifferentSizes(title: String){
self.title = title
guard let navigationBarHeight: CGFloat =
self.navigationController?.navigationBar.frame.height else{
return
}
let tlabel = UILabel(frame: CGRect(x: 0.0, y: 0.0, width:
200.0, height: navigationBarHeight))
tlabel.text = self.title
tlabel.textColor = UIColor.white
tlabel.font = font24
tlabel.backgroundColor = UIColor.clear
tlabel.adjustsFontSizeToFitWidth = true
self.navigationItem.titleView = tlabel
}
}
我从这个 SO 问题中得到了这个解决方案并做了一些修改:
How to resize Title in a navigation bar dynamically
现在我遇到的问题是标题的文本没有与其他导航栏项目垂直对齐,正如您在图像中看到的那样,我展示了一个我只是在不使用上述方法的情况下设置标题的地方, 并且那里的文字放不下但对齐正确,而另一张图片使用上面的方法放置了文字但未对齐。
试试这个:-
func setTitleDifferentSizes(title: String){
self.title = title
guard let navigationBarHeight: CGFloat =
self.navigationController?.navigationBar.frame.height else{
return
}
let attributedString = NSMutableAttributedString(string: title)
let myAttribute = [ NSForegroundColorAttributeName: UIColor.white ,NSFontAttributeName: font24]
attributedString.addAttributes(myAttribute, range: NSRange(location: 0, length: attributedString.string.characters.count))
attributedString.addAttributes([NSBaselineOffsetAttributeName:6.0], range: NSRange(location: 0, length: title.characters.count)
)
let tlabel = UILabel(frame: CGRect(x: 0.0, y: 0.0, width:
200.0, height: navigationBarHeight))
tlabel.attributedText = attributedString
tlabel.backgroundColor = UIColor.clear
tlabel.adjustsFontSizeToFitWidth = true
tlabel.minimumScaleFactor = 0.2
tlabel.textAlignment = .center
self.navigationItem.titleView = tlabel
}
如果要调整文本的位置,请更改 NSBaselineOffsetAttributeName 的浮点值以设置垂直对齐方式。
我在 UIViewController
扩展中使用这个函数来添加一个标题来调整字体以适应宽度。
extesion UIViewController {
func setTitleDifferentSizes(title: String){
self.title = title
guard let navigationBarHeight: CGFloat =
self.navigationController?.navigationBar.frame.height else{
return
}
let tlabel = UILabel(frame: CGRect(x: 0.0, y: 0.0, width:
200.0, height: navigationBarHeight))
tlabel.text = self.title
tlabel.textColor = UIColor.white
tlabel.font = font24
tlabel.backgroundColor = UIColor.clear
tlabel.adjustsFontSizeToFitWidth = true
self.navigationItem.titleView = tlabel
}
}
我从这个 SO 问题中得到了这个解决方案并做了一些修改: How to resize Title in a navigation bar dynamically
现在我遇到的问题是标题的文本没有与其他导航栏项目垂直对齐,正如您在图像中看到的那样,我展示了一个我只是在不使用上述方法的情况下设置标题的地方, 并且那里的文字放不下但对齐正确,而另一张图片使用上面的方法放置了文字但未对齐。
试试这个:-
func setTitleDifferentSizes(title: String){
self.title = title
guard let navigationBarHeight: CGFloat =
self.navigationController?.navigationBar.frame.height else{
return
}
let attributedString = NSMutableAttributedString(string: title)
let myAttribute = [ NSForegroundColorAttributeName: UIColor.white ,NSFontAttributeName: font24]
attributedString.addAttributes(myAttribute, range: NSRange(location: 0, length: attributedString.string.characters.count))
attributedString.addAttributes([NSBaselineOffsetAttributeName:6.0], range: NSRange(location: 0, length: title.characters.count)
)
let tlabel = UILabel(frame: CGRect(x: 0.0, y: 0.0, width:
200.0, height: navigationBarHeight))
tlabel.attributedText = attributedString
tlabel.backgroundColor = UIColor.clear
tlabel.adjustsFontSizeToFitWidth = true
tlabel.minimumScaleFactor = 0.2
tlabel.textAlignment = .center
self.navigationItem.titleView = tlabel
}
如果要调整文本的位置,请更改 NSBaselineOffsetAttributeName 的浮点值以设置垂直对齐方式。