阿拉伯语导航栏中的标题问题

问题描述 投票:0回答:1

我有这个功能的问题:

    func setTitle(title:String, subtitle:String) -> UIView {
    let titleLabel = UILabel(frame: CGRect(x:0, y:-5, width:0, height:0))

    titleLabel.backgroundColor = UIColor.clear
    titleLabel.textColor = UIColor.gray
    titleLabel.font = UIFont.boldSystemFont(ofSize: 17)
    titleLabel.text = title
    titleLabel.sizeToFit()

    let subtitleLabel = UILabel(frame: CGRect(x:0, y:18, width:0, height:0))
    subtitleLabel.backgroundColor = UIColor.clear
    subtitleLabel.textColor = UIColor.black
    subtitleLabel.font = UIFont.systemFont(ofSize: 12)
    subtitleLabel.text = subtitle
    subtitleLabel.sizeToFit()

    let titleView = UIView(frame: CGRect(x:0, y:0, width:max(titleLabel.frame.size.width, subtitleLabel.frame.size.width), height:30))
    titleView.addSubview(titleLabel)
    titleView.addSubview(subtitleLabel)

    let widthDiff = subtitleLabel.frame.size.width - titleLabel.frame.size.width

    if widthDiff > 0 {
        var frame = titleLabel.frame
        frame.origin.x = widthDiff / 2
        titleLabel.frame = frame.integral
    } else {
        var frame = subtitleLabel.frame
        frame.origin.x = abs(widthDiff) / 2
        titleLabel.frame = frame.integral
    }

    return titleView

}

//使用:self.navigationItem.titleView = setTitle(“title”,“subtitle”)

//来源:http://stackoverflow.com/questions/12914004/uinavigationbar-titleview-with-subtitle

English text

Arabic text

如上图所示,每当有人用阿拉伯语[图片2]写作时,标题就会搞砸,但如果有人用英文写的[图片1]。产权标签保持良好。

先感谢您。

ios swift uinavigationbar
1个回答
1
投票

我使用阿拉伯语和英语单词的所有组合运行代码,并在代码中发现问题。看看这个。

    if widthDiff > 0 {
        var frame = titleLabel.frame
        frame.origin.x = widthDiff / 2
        titleLabel.frame = frame.integral
    } else {
        var frame = subtitleLabel.frame
        frame.origin.x = abs(widthDiff) / 2
        titleLabel.frame = frame.integral /* subtitleLabel.frame = frame.integral */
    }
© www.soinside.com 2019 - 2024. All rights reserved.