String 快速字符串填充不相等?

String 快速字符串填充不相等?,string,swift,String,Swift,(swift) 使用String.stringByPaddingToLength时,它会正确地填充到设置的字符数,但是由于某些字符比其他字符大,不同的行具有不同的填充位置 发生了什么事。。。(不等间距) 我需要什么(等间距) 我是否可以使用stringByPaddingToLength来获得此结果?似乎它只是担心字符的数量,而不是它的实际结束位置。使用tab对齐字符串: let paragraphStyle = NSMutableParagraphStyle() let terminator =

(swift)

使用
String.stringByPaddingToLength
时,它会正确地填充到设置的字符数,但是由于某些字符比其他字符大,不同的行具有不同的填充位置

发生了什么事。。。(不等间距)

我需要什么(等间距)


我是否可以使用
stringByPaddingToLength
来获得此结果?似乎它只是担心字符的数量,而不是它的实际结束位置。

使用tab对齐字符串:

let paragraphStyle = NSMutableParagraphStyle()
let terminator = NSTextTab.columnTerminatorsForLocale(NSLocale.currentLocale())
// Adjust the location as needed for your text
let tab = NSTextTab(textAlignment: .Right, location: 72.0 * 2, options: [NSTabColumnTerminatorsAttributeName: terminator])
paragraphStyle.tabStops = [tab]

let attributedString = NSMutableAttributedString(string: "Apple:\t$1.50\nOrange:\t$1", attributes: [NSParagraphStyleAttributeName: paragraphStyle])
self.textView.attributedText = attributedString
这张照片是:

Apple:         $1.5
Orange:        $1

它们在小数点处对齐。我还没有找到如何添加前导点。如果有人这样做,请随意编辑我的答案。

是的,它只关心字符数,因为它是一个字符串方法。现在,它已经了解了要用于显示它们的字体。这种方法只能用于单空间字体,例如在控制台上打印时。保持标签和值字符串分开,并为它们使用不同的标签。是的,我曾尝试使用两个UITextView,但现在它们不会滚动到一起。不要使用“填充”。使用NSAttribute字符串和制表符。
let paragraphStyle = NSMutableParagraphStyle()
let terminator = NSTextTab.columnTerminatorsForLocale(NSLocale.currentLocale())
// Adjust the location as needed for your text
let tab = NSTextTab(textAlignment: .Right, location: 72.0 * 2, options: [NSTabColumnTerminatorsAttributeName: terminator])
paragraphStyle.tabStops = [tab]

let attributedString = NSMutableAttributedString(string: "Apple:\t$1.50\nOrange:\t$1", attributes: [NSParagraphStyleAttributeName: paragraphStyle])
self.textView.attributedText = attributedString
Apple:         $1.5
Orange:        $1