具有两个文本对齐方式的属性文本

Attributed text with two text alignments

有谁知道如何在一个字符串中实现两种不同的文本对齐方式?

这是我希望 textView 显示的内容:

label                                                                         value

我的代码:

let txtView = cell.viewWithTag(77) as! UITextView

let leftStyle = NSMutableParagraphStyle()
leftStyle.alignment = NSTextAlignment.Left
let rightStyle = NSMutableParagraphStyle()
rightStyle.alignment = NSTextAlignment.Right

let attText = NSMutableAttributedString(string: "label", attributes: [NSParagraphStyleAttributeName: leftStyle])
attText.appendAttributedString(NSAttributedString(string: " "))
attText.appendAttributedString(NSAttributedString(string: "value", attributes: [NSParagraphStyleAttributeName: rightStyle]))

txtView.attributedText = attText

我得到的是:

label value

NSMutableParagraphStyleNSTextTab 一起使用:

let paragraph = NSMutableParagraphStyle()
paragraph.tabStops = [
    NSTextTab(textAlignment: .Right, location: 100, options: [:]),
]

let str = "Label\tValue\n"
    + "foo\tbar\n"

let attributed = NSAttributedString(
    string: str,
    attributes: [NSParagraphStyleAttributeName: paragraph]
)

let view = UITextView(frame: CGRectMake(0, 0, 120, 120))
view.textContainer.lineFragmentPadding = 10

view.attributedText = attributed

当然,这对齐到"tabstop",但不是对齐到UITextView的边缘。修改view的大小时,还要修改NSTextTablocation

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
        let cell = Placestableview.dequeueReusableCell(withIdentifier: "cell", for: indexPath);

        //first text
        let attributestitle = [NSAttributedStringKey.font:
            UIFont(name: "Helvetica-Bold", size: 15.0)!,
                          NSAttributedStringKey.foregroundColor: UIColor.black] as [NSAttributedStringKey: Any]

        //second text
        let attributedString = NSMutableAttributedString(string: "\t"+String(places[indexPath.row].distance!)+" miles", attributes: [NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 8.0)!,NSAttributedStringKey.foregroundColor: UIColor.black])


        let myParagraphStyle = NSMutableParagraphStyle()
        myParagraphStyle.alignment = .right
        myParagraphStyle.tabStops = [
            NSTextTab(textAlignment: .right, location: 300, options: [:]),
        ]

        let attributedStringtitle  = NSMutableAttributedString(string: places[indexPath.row].title!, attributes: attributestitle)
        //adding the right alignment to the second text alone
        attributedString.addAttributes([.paragraphStyle: myParagraphStyle], range: NSRange(location: 0, length: attributedString.length))

        //combining two texts with different alignments.
        let combination = NSMutableAttributedString()
        combination.append(attributedStringtitle)
        combination.append(attributedString)
        cell.textLabel?.attributedText = combination
        return cell;
    }