ios - ¿Cómo hacer un texto subrayado en UILabel?
cocoa-touch underline (6)
The Designer Way - Versión altamente personalizable
Personalmente prefiero personalizar mi diseño (s) tanto como sea posible. A veces, encontrará que usar la herramienta de subrayado integrada no es fácilmente personalizable.
Así es como lo hago:
1 Primero creo una UIView para el subrayado. A continuación, puede elegir su color de fondo, ya sea en IB o mediante programación. Las restricciones son clave aquí.
2 Luego, puede personalizar el subrayado tanto como desee. Por ejemplo, para adaptar el ancho del subrayado para un mejor efecto visual, cree una conexión de salida a una restricción en Interface Builder.
3 A continuación, puede personalizar fácilmente su vista de subrayado mediante programación. Por ejemplo, para hacerte una idea, haremos que el subrayado sea 20 px más amplio que el título "Panes":
var originalString: String = "Breads"
let myString: NSString = originalString as NSString
let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)])
self.widthUnderlineTitle.constant = size.width + 20
Resultados:
¿Cómo puedo hacer un texto subrayado en UILabel
?
Lo intenté haciendo una UILabel
con altura 0.5f y la coloqué debajo del texto. Esta etiqueta de línea no está visible cuando estoy ejecutando mi aplicación en el simulador de iPhone 4.3 y iPhone 4.3 , pero está visible en el simulador de iPhone 5.0 en adelante. ¿Por qué?
¿Cómo puedo hacer esto?
C objetivo
iOS 6.0> versión
UILabel
admite NSAttributedString
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Hello Good Morning"];
[attributeString addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:1]
range:(NSRange){0,[attributeString length]}];
Rápido
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "Hello Good Morning")
attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSMakeRange(0, attributeString.length))
Definición :
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange
Parameters List:
nombre : una cadena que especifica el nombre del atributo. Las claves de atributo pueden ser suministradas por otro marco o pueden ser personalizados que usted defina. Para obtener información sobre dónde encontrar las claves de atributo proporcionadas por el sistema, consulte la sección de descripción general en Referencia de clase NSAttributedString.
valor : el valor del atributo asociado con el nombre.
aRange : el rango de caracteres al que se aplica el par atributo / valor especificado.
Ahora usa esto:
yourLabel.attributedText = [attributeString copy];
iOS 5.1.1 <versión
Necesita 3 party attributed Label
para mostrar attributed text
:
1) Consulte el enlace TTTAttributedLabel . Su mejor Label
terceros attributed
para display
text
atribuido.
2) refiere a OHAttributedLabel para Label
attributed
terceros
Eche un vistazo a TTTAttributedLabel . Si tiene permiso para usar componentes de terceros, simplemente reemplace sus UILabels con TTTAttributedLabel donde lo necesite (reemplazo inmediato). Funciona con iOS <6.0!
Estoy usando Xcode 9 y iOS 11. Para hacer el UILabel con un subrayado debajo. Puede usar ambos 1. Usando el código 2. Usando xib
Usando el código:
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"I am iOS Developer"];
[attributeString addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:1]
range:(NSRange){0,[attributeString length]}];
lblAttributed.attributedText = attributeString;
También podemos usar el botón para.
Extensión Swift en UILabel:
Aún necesita mejorar, cualquier pensamiento es bienvenido:
extension UILabel{
func underLine(){
if let textUnwrapped = self.text{
let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]
let underlineAttributedString = NSAttributedString(string: textUnwrapped, attributes: underlineAttribute)
self.attributedText = underlineAttributedString
}
}
}
Una de las desventajas que se me ocurre en este momento es que tendrá que ser llamada cada vez que cambie el texto, y no hay una forma real de apagarlo ...
Swift 4.0
var attributeString = NSMutableAttributedString(string: "Hello Good Morning")
attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSRange)