如何增加UILabel中的字符间距
我在> = iOS6中创build了一个应用程序。 我想改变UILabel中的字符间距。 我已经在我的应用程序中添加了自定义字体“FUTURABT HEAVY”,但字符太靠近海誓山盟了。
我在这里find了很好的代码来增加字符间距。 但是,如果我试图改变它,而不是我的文字成为左alignment,而不是中心。
请帮助我这种情况。
你可能应该使用带NSKernAttributeName
属性的NSKernAttributeName
这是一个小例子:
UILabel *label = [[UILabel alloc] initWithFrame:self.view.bounds]; NSString *string = @"Some important text"; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; float spacing = 5.0f; [attributedString addAttribute:NSKernAttributeName value:@(spacing) range:NSMakeRange(0, [string length])]; label.attributedText = attributedString; [self.view addSubview:label];
这个Swift扩展
extension UILabel { func addCharactersSpacing(spacing:CGFloat, text:String) { let attributedString = NSMutableAttributedString(string: text) attributedString.addAttribute(NSKernAttributeName, value: spacing, range: NSMakeRange(0, text.characters.count)) self.attributedText = attributedString } }
所以你可以使用它
MyLabel.addCharactersSpacing(5, text: "Some Text")
斯威夫特4
extension UILabel { func setCharacterSpacing(characterSpacing: CGFloat = 0.0) { guard let labelText = text else { return } let attributedString: NSMutableAttributedString if let labelAttributedText = attributedText { attributedString = NSMutableAttributedString(attributedString: labelAttributedText) } else { attributedString = NSMutableAttributedString(string: labelText) } // Character spacing attribute attributedString.addAttribute(NSAttributedStringKey.kern, value: characterSpacing, range: NSMakeRange(0, attributedString.length)) attributedText = attributedString } }
Swift 3
let label = UILabel() let stringValue = "Sample text" let attrString = NSMutableAttributedString(string: stringValue) attrString.addAttribute(NSKernAttributeName, 2: style, range: NSRange(location: 0, length: stringValue.characters.count)) label.attributedText = attrString
NSString *strDigit= @"001"; NSString *strCrushImpact =[NSStringstringWithFormat:@"%d",[strDigit intValue]]; // Set space in between character float spacing = 3.0f; NSMutableAttributedString *attributedStrDigit = [[NSMutableAttributedString alloc] initWithString:strWin]; [strCrushImpact addAttribute:NSKernAttributeName value:@(spacing) range:NSMakeRange(0, [strDigit length])]; label.attributedText = attributedStrDigit;