Saltar al contenido

¿Cómo subrayar un UILabel en rápido?

Este dilema se puede abordar de diversas formas, pero nosotros te dejamos la que para nosotros es la respuesta más completa.

Solución:

Puede hacer esto usando NSAttributedString

Ejemplo:

let underlineAttribute = [NSAttributedString.Key.underlineStyle: NSUnderlineStyle.thick.rawValue]
let underlineAttributedString = NSAttributedString(string: "StringWithUnderLine", attributes: underlineAttribute)
myLabel.attributedText = underlineAttributedString

EDITAR

Tener lo mismo attributes para todos los textos de un UILabel, te sugiero que subclases UILabel y el texto predominante, así:

Rápido 5

Igual que Swift 4.2 pero: Deberías preferir el inicializador Swift NSRange sobre el viejo NSMakeRange, puedes acortarlo a .underlineStyle y los saltos de línea mejoran la legibilidad para llamadas de método largas.

class UnderlinedLabel: UILabel 

override var text: String? 
    didSet 
        guard let text = text else  return 
        let textRange = NSRange(location: 0, length: text.count)
        let attributedText = NSMutableAttributedString(string: text)
        attributedText.addAttribute(.underlineStyle,
                                    value: NSUnderlineStyle.single.rawValue,
                                    range: textRange)
        // Add other attributes if needed
        self.attributedText = attributedText
        
    

Rápido 4.2

class UnderlinedLabel: UILabel 

override var text: String? 
    didSet 
        guard let text = text else  return 
        let textRange = NSMakeRange(0, text.count)
        let attributedText = NSMutableAttributedString(string: text)
        attributedText.addAttribute(NSAttributedString.Key.underlineStyle , value: NSUnderlineStyle.single.rawValue, range: textRange)
        // Add other attributes if needed
        self.attributedText = attributedText
        
    

Swift 3.0

class UnderlinedLabel: UILabel 
    
    override var text: String? 
        didSet 
            guard let text = text else  return 
            let textRange = NSMakeRange(0, text.characters.count)
            let attributedText = NSMutableAttributedString(string: text)
            attributedText.addAttribute(NSUnderlineStyleAttributeName , value: NSUnderlineStyle.styleSingle.rawValue, range: textRange)
            // Add other attributes if needed
            self.attributedText = attributedText
        
    

Y pones tu texto así:

@IBOutlet weak var label: UnderlinedLabel!
    
    override func viewDidLoad() 
        super.viewDidLoad()
        
        label.text = "StringWithUnderLine"
    

VIEJO:

Rápido (2.0 a 2.3):

class UnderlinedLabel: UILabel 
    
    override var text: String? 
        didSet 
            guard let text = text else  return 
            let textRange = NSMakeRange(0, text.characters.count)
            let attributedText = NSMutableAttributedString(string: text)
            attributedText.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: textRange)
            // Add other attributes if needed
            
            self.attributedText = attributedText
        
    

Rápido 1.2:

class UnderlinedLabel: UILabel 
    
    override var text: String! 
        didSet 
            let textRange = NSMakeRange(0, count(text))
            let attributedText = NSMutableAttributedString(string: text)
            attributedText.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: textRange)
            // Add other attributes if needed
            
            self.attributedText = attributedText
        
    

Swift 5 y 4.2 un trazador de líneas:

label.attributedText = NSAttributedString(string: "Text", attributes:
    [.underlineStyle: NSUnderlineStyle.single.rawValue])

Swift 4 un trazador de líneas:

label.attributedText = NSAttributedString(string: "Text", attributes:
    [.underlineStyle: NSUnderlineStyle.styleSingle.rawValue])

Swift 3 un trazador de líneas:

label.attributedText = NSAttributedString(string: "Text", attributes:
      [NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue])

Si está buscando una forma de hacer esto sin herencia:

Rápido 5

extension UILabel 
    func underline() 
        if let textString = self.text 
          let attributedString = NSMutableAttributedString(string: textString)
            attributedString.addAttribute(NSAttributedString.Key.underlineStyle,
                                          value: NSUnderlineStyle.single.rawValue,
                                          range: NSRange(location: 0, length: attributedString.length))
          attributedText = attributedString
        
    

Rápido 3/4

// in swift 4 - switch NSUnderlineStyleAttributeName with NSAttributedStringKey.underlineStyle
extension UILabel 
    func underline() 
        if let textString = self.text 
          let attributedString = NSMutableAttributedString(string: textString)
          attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.styleSingle.rawValue, range: NSRange(location: 0, length: attributedString.length))
          attributedText = attributedString
        
    



extension UIButton 
  func underline() 
    let attributedString = NSMutableAttributedString(string: (self.titleLabel?.text!)!)
    attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.styleSingle.rawValue, range: NSRange(location: 0, length: (self.titleLabel?.text!.characters.count)!))
    self.setAttributedTitle(attributedString, for: .normal)
  

Recuerda dar visibilidad a esta noticia si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *