Saltar al contenido

¿Cómo puedo crear una UILabel con texto tachado?

Te sugerimos que revises esta resolución en un ambiente controlado antes de enviarlo a producción, saludos.

Solución:

CÓDIGO DE ACTUALIZACIÓN SWIFT 4

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your Text")
    attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))

entonces:

yourLabel.attributedText = attributeString

Para hacer una parte de string golpear y luego proporcionar rango

let somePartStringRange = (yourStringHere as NSString).range(of: "Text")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: somePartStringRange)

C objetivo

En iOS 6.0 >UILabel apoya NSAttributedString

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
                        value:@2
                        range:NSMakeRange(0, [attributeString length])];

Rápido

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your String here")
attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

Definición :

- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange

Parameters List:

nombre : UN string especificando el attribute nombre. Atributo keys puede ser proporcionado por otro marco o puede ser uno personalizado que defina. Para obtener información sobre dónde encontrar el sistema suministrado attribute keysconsulte la sección de información general en NSAttributedString Class Reference.

valor : Él attribute valor asociado con el nombre.

aRango : El rango de caracteres al que se especifica attributeSe aplica el par /valor.

Entonces

yourLabel.attributedText = attributeString;

Para lesser than iOS 6.0 versions necesitas 3-rd party component para hacer esto. Uno de ellos es TTTAttributedLabel, otro es OHAttributedLabel.

En Swift, usando la enumeración para el estilo de línea tachado único:

let attrString = NSAttributedString(string: "Label Text", attributes: [NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
label.attributedText = attrString

Estilos de tachado adicionales (Recuerde acceder a la enumeración usando .rawValue):

  • NSUnderlineStyle.StyleNone
  • NSUnderlineStyle.StyleSingle
  • NSUnderlineStyle.StyleThick
  • NSUnderlineStyle.StyleDouble

Patrones tachados (para ser OR-ed con el estilo):

  • NSUnderlineStyle.PatternDot
  • NSUnderlineStyle.PatternDash
  • NSUnderlineStyle.PatternDashDot
  • NSUnderlineStyle.PatternDashDotDot

Especifique que el tachado solo se debe aplicar entre palabras (no espacios):

  • NSUnderlineStyle.ByWord

yo prefiero NSAttributedString en vez de NSMutableAttributedString para este caso sencillo:

NSAttributedString * title =
    [[NSAttributedString alloc] initWithString:@"$198"
                                    attributes:@NSStrikethroughStyleAttributeName:@(NSUnderlineStyleSingle)];
[label setAttributedText:title];

Constantes para especificar tanto el NSUnderlineStyleAttributeName y NSStrikethroughStyleAttributeName attributes de un atribuido string:

typedef enum : NSInteger   
  NSUnderlineStyleNone = 0x00,  
  NSUnderlineStyleSingle = 0x01,  
  NSUnderlineStyleThick = 0x02,  
  NSUnderlineStyleDouble = 0x09,  
  NSUnderlinePatternSolid = 0x0000,  
  NSUnderlinePatternDot = 0x0100,  
  NSUnderlinePatternDash = 0x0200,  
  NSUnderlinePatternDashDot = 0x0300,  
  NSUnderlinePatternDashDotDot = 0x0400,  
  NSUnderlineByWord = 0x8000  
 NSUnderlineStyle;  

Si sostienes algún recelo y disposición de refinar nuestro división puedes ejecutar un paráfrasis y con mucho gusto lo interpretaremos.

¡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 *