2016-03-06 106 views
0

(SWIFT)Swift字符串填充不等于?

当使用String.stringByPaddingToLength它正确垫字符集数不同但线具有不同的填充位置由于这样的事实,一些字符是比其他大。

请告诉我发生了......(不等距)

SomeValueName:..................SomeValue (40 characters wide) 

SomeDifferentValue..........SomeValue (40 characters wide) 

什么我需要(间距相等)

someValueName:..............SomeValue (40 characters wide) 

someDifferentValue...........SomeValue (40 characters wide) 

难道我不可能使用stringByPaddingToLength获得这样的结果?看起来好像它只是担心字符的数量实际上并不是它结束的地方。

+1

是的,它只是担心字符数,因为它是一个字符串方法。它现在知道你想用来显示它们的字体。这种方法只能用于等宽字体,例如打印到控制台时。保持标签和值字符串分开,并为它们使用不同的标签。 – Sulthan

+0

是的,我做了一个使用两个UITextViews的工作,但现在他们不滚动 – user5705847

+1

不要使用“填充”。使用NSAttributedString和选项卡。 – matt

回答

0

使用标签对准你的字符串:

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 

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