手动设置导航项的 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 的浮点值以设置垂直对齐方式。