Cómo boost el espaciado de caracteres en UILabel

Estoy creando una aplicación en> = iOS6. Y quiero cambiar el espaciado de caracteres en UILabel. He agregado la fuente personalizada "FUTURABT HEAVY" en mi aplicación, pero el personaje está demasiado cerca el uno del otro.

Encontré el buen código aquí para boost el espacio entre caracteres. Pero si intenté cambiarlo, mi text se convirtió en alignment a la izquierda en lugar del centro.

Por favor, ayúdame con esta situación.

Probablemente debería usar NSAttributedString con el atributo NSKernAttributeName

Aquí hay un pequeño ejemplo:

 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]; 

Extensión rápida para esto

 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 } } 

Para que puedas usarlo

 MyLabel.addCharactersSpacing(5, text: "Some Text") 
  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; 

Swift 4

 extension UILabel { func setCharacterSpacing(characterSpacing: CGFloat = 0.0) { guard let labelText = self.text else { return } let attributedString:NSMutableAttributedString if let labelattributedText = self.attributedText { attributedString = NSMutableAttributedString(attributedString: labelattributedText) } else { attributedString = NSMutableAttributedString(string: labelText) } // Character spacing attribute attributedString.addAttribute(NSAttributedStringKey.kern, value: characterSpacing, range: NSMakeRange(0, attributedString.length)) self.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 
Intereting Posts