2016-02-07 24 views
1

我试图给LineSpacing和LineHeight给我的UILabel。我有两个功能的扩展,两个都可以单独工作。不能让他们一起工作。Swift:我如何在UILabel上同时使用LineSpacing和LineHeight

extension UILabel { 

func setText(text: String, lineSpacing: CGFloat) { 
    self.attributedText = NSAttributedString(string: text, attributes: lineSpacingAttribute(lineSpacing)) 
} 

func setText(text:String, CharacterSpacing:CGFloat) { 

    let attributedString = NSMutableAttributedString(string: text) 
    attributedString.addAttribute(NSKernAttributeName, value: CharacterSpacing, range: NSMakeRange(0, text.characters.count)) 
    self.attributedText = attributedString 

} 
} 

第二个功能明显覆盖的第一个,当我这样做:

ExampleLabel.setText(myTextString, withLineSpacing: 10) 
    ExampleLabel.setText(myTextString, CharacterSpacing: 10, lineSpacing: 10) 

我试图将这些功能合并成一个,但我总是错误告终。请帮助?

回答

0

这里的的setText功能的版本,改编自斯威夫特答案在How do you use NSAttributedString?

func setText(text:String, CharacterSpacing:CGFloat, lineSpacing: CGFloat) { 
    let myParagraphStyle = NSMutableParagraphStyle() 
    myParagraphStyle.lineSpacing = lineSpacing 
    let myAttributes:Dictionary = [ 
     NSParagraphStyleAttributeName: myParagraphStyle, 
     NSKernAttributeName: CharacterSpacing 
    ] 
    let attributedString = NSAttributedString(string: text, attributes: myAttributes) 
    label1.attributedText = attributedString 
} 

这似乎是为我工作。

+0

太棒了,就是我需要的!谢谢! =) –

相关问题