12

Quiero mostrar la identificación del correo en mi vista de manera que al hacer clic en el ID del correo se abra la vista del autor del correo.iPhone: ¿Cómo mostrar texto subrayado en un botón?

Quiero mostrar el texto del botón como subrayado para mostrar que es un hipervínculo y para el evento de clic de botón para llamar a la vista del compositor de correo. En este momento, no puedo mostrar el texto del botón subrayado.

Pensé colocar una etiqueta encima del botón y ajustar la propiedad de la etiqueta para obtener el texto subrayado, pero eso no funcionó.

¿Hay alguna forma diferente de obtener la apariencia y el comportamiento que deseo?

+0

Aquí se muestra cómo hacer lo mismo en el guión gráfico (XCode 6). http://stackoverflow.com/a/26930512/309046 – satish

Respuesta

3

Otra alternativa es establecer una imagen para el botón. Cree una imagen que muestre el texto apropiado y el botón mostrará eso en lugar de texto.

Estoy de acuerdo con Zack en que el texto subrayado es redundante y viola la gramática de la interfaz. Subraya texto para enlaces en primer lugar para indicar que tienen comportamiento como botones. Si el texto ya está en un botón, no hay necesidad de subrayarlo para indicar que se comporta como un botón porque el usuario ya espera una acción en respuesta a hacer clic en él.

+1

Y si tiene traducciones, @TechZen, ¿tiene que preparar la imagen para cada idioma? – new2ios

3

Para hacer lo que quiera, necesitará usar CGContextStrokePath() para dibujar el subrayado en el CGLayer de UILabel.

Dicho esto, lo desafiaría a que reconsidere su elección de diseño. Hacer que el texto del botón parezca ser un hipervínculo tendría sentido en una aplicación de escritorio de Windows (por ejemplo, usando un LinkLabel). Sin embargo, el iPhone OS tiene un conjunto diferente de convenciones de interfaz de usuario debido a su pantalla más pequeña y la necesidad de objetivos más grandes para acomodar la entrada táctil.

El enfoque "Cocoa Touch" para este problema sería mostrar una lista de identificadores de correo con una UITableView. Proporcione a cada fila un botón de accesorio apropiado. Por ejemplo, puede usar un UITableViewCellAccessoryDetailDisclosureButton, o un UIButton con buttonType de UIButtonTypeContactAdd). El controlador de eventos del botón de accesorio luego mostraría el compositor de correo.

¡Buena suerte y feliz codificación!

0

¿Qué sucede si desea proporcionar un enlace a un sitio web dentro de un bloque de texto? El usuario necesitaría alguna indicación visual de que el texto es un enlace y lo llevará a alguna parte.

El aspecto subrayado subrayado azul es la norma esperada pero entiendo que esta es la manera de la PC. Entonces, ¿cómo es el iPhone?

En el pasado, he usado un botón personalizado sin fondo, etc. y texto azul, aunque no está subrayado, permite el texto tapizable.

estarían interesados ​​en saber lo que otros hacen ....

1

sencilla, utilizando una vista web y enchufe en un bloque de HTML para mostrar cualquier texto que iPhone no puede hacer sino html lata.

+1

Simple es subrayado = SÍ. ¿Cómo es eso simple? – Luda

+0

Sí, claro, eso es simple ...: D – EFE

5

Swift 3.2

if let title = button.titleLabel?.text, title != "" { 

    let attributeString = NSMutableAttributedString(string: title) 

    attributeString.addAttribute(NSAttributedStringKey.underlineStyle, value: 1, range: NSMakeRange(0, title.count)) 

    button.titleLabel?.attributedText = attributeString 
} 

Objetivo C

NSString *tem = self.myButton.titleLabel.text; 

if (tem != nil && ![tem isEqualToString:@""]) { 
    NSMutableAttributedString *temString=[[NSMutableAttributedString alloc]initWithString:tem]; 
    [temString addAttribute:NSUnderlineStyleAttributeName 
         value:[NSNumber numberWithInt:1] 
         range:(NSRange){0,[temString length]}]; 

    self.myButton.titleLabel.attributedText = temString; 
} 
4

Desde iOS 6.0 se puede utilizar con NSAttributedStringUIButton.

//create an underlined attributed string 
NSAttributedString *titleString = [[NSAttributedString alloc] initWithString:@"Title" attributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid)}]; 

//use the setAttributedTitle method 
[yourButton setAttributedTitle:titleString forState:UIControlStateNormal]; 
7

hacerlo en constructor de interfaces

  1. Haga clic en el botón/etiqueta
  2. En Atributos inspector, cambie título/texto a Atribuido de llanura
  3. Seleccione el texto que desea mostrar.
  4. haga clic derecho sobre él Goto Fuente-> Línea inferior
26

Adición de una captura de pantalla para @ respuesta de Haider.

Nota: Solo el texto resaltado se subraya, por lo que puede subrayar un rango específico si lo desea.

enter image description here

que terminó subrayando que en el código de todos modos, sólo porque no pude conseguir Negrita para trabajar en conjunto con Subrayado por alguna razón. Podría haber sido por la fuente que estaba usando, quién sabe.

@IBOutlet weak var underlineButton: UIButton! { 
    didSet { 
     let attrs = [ 
      NSFontAttributeName : UIFont(name: "MyCustomFont-Bold", size: 19.0)!, 
      NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue, 
      NSForegroundColorAttributeName : UIColor.orangeColor() 
     ] 
     let attrString = NSMutableAttributedString(string: "Button text", attributes:attrs) 
     underlineButton.setAttributedTitle(attrString, forState: .Normal) 
    } 
} 
Cuestiones relacionadas