12

Desidero visualizzare l'ID di posta elettronica nella mia vista in modo che facendo clic sull'ID di posta si apra la vista del compositore di posta.iPhone: come visualizzare il testo sottolineato in un pulsante?

Desidero visualizzare il testo del pulsante come sottolineato per mostrare che si tratta di un collegamento ipertestuale e per l'evento clic sul pulsante per chiamare la vista del compositore di posta elettronica. Al momento, non sono in grado di mostrare il testo del pulsante sottolineato.

Ho pensato di posizionare un'etichetta sopra il pulsante e di regolare la proprietà dell'etichetta per ottenere il testo sottolineato ma non ha funzionato.

Esiste un modo diverso per ottenere l'aspetto e il comportamento che desidero?

+0

Ecco come fare lo stesso nello storyboard (XCode 6). http://stackoverflow.com/a/26930512/309046 – satish

risposta

3

Un'altra alternativa è impostare un'immagine per il pulsante. Crea un'immagine che visualizza il testo appropriato e il pulsante visualizzerà quello invece del testo.

Sono d'accordo con Zack che la sottolineatura del testo è ridondante e viola la grammatica dell'interfaccia. Sottolinea il testo dei link in primo luogo per indicare che hanno un comportamento simile ai pulsanti. Se il testo è già presente in un pulsante, non è necessario evidenziarlo per indicare che si comporta come un pulsante perché l'utente prevede già un'azione in risposta al clic su di esso.

+1

E se avete traduzioni, @TechZen, dovete preparare l'immagine per ogni lingua? – new2ios

3

Per fare ciò che si desidera, è necessario utilizzare CGContextStrokePath() per tracciare la sottolineatura sul CGLayer di UILabel.

Detto questo, vorrei sfidarti a riconsiderare la tua scelta di design. Rendere il testo del pulsante sembrare un collegamento ipertestuale avrebbe senso per un'applicazione desktop Windows (ad esempio usando un LinkLabel). Tuttavia, il sistema operativo dell'iPhone ha un diverso insieme di convenzioni dell'interfaccia utente a causa del suo schermo più piccolo e della necessità di obiettivi più grandi per adattarsi all'input tattile.

L'approccio "Cocoa Touch" a questo problema sarebbe quello di visualizzare un elenco di ID di posta utilizzando UITableView. Fornire a ciascuna riga un pulsante accessorio appropriato. Ad esempio, è possibile utilizzare uno UITableViewCellAccessoryDetailDisclosureButton o uno UIButton con buttonType di UIButtonTypeContactAdd). Il gestore di eventi del pulsante accessorio richiamerà quindi il compositore di posta.

Buona fortuna e buona programmazione!

0

E se si desidera fornire un collegamento a un sito Web all'interno di un blocco di testo? L'utente avrebbe bisogno di qualche indicazione visiva il testo è un collegamento e li porterà da qualche parte.

L'aspetto blu con collegamento ipertestuale sottolineato è la norma prevista, ma è chiaro che questo è il modo per PC. Allora, qual è il modo iPhone?

In passato ho utilizzato un pulsante personalizzato senza sfondo ecc. E testo blu, anche se non sottolineato consente testo intercettabile.

sarebbero interessati a sapere cosa fanno gli altri ....

1

semplice, utilizzando un WebView e collegare in un blocco di HTML per visualizzare qualsiasi testo che iPhone non può fare altro che HTML può.

+1

Semplice è sottolineato = SÌ. Com'è semplice? – Luda

+0

sì, questo è semplice ....: 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 
} 

Objective 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

Dal momento che iOS 6.0 è possibile utilizzare NSAttributedString con UIButton.

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

di farlo in Interface Builder

  1. Cliccare sul pulsante/etichetta
  2. In Attributi, cambiare titolo/testo a Attribuito dalla pianura
  3. Selezionare il testo che si desidera mostrare.
  4. fare clic destro su di esso Goto Carattere-> Sottolineato
26

Aggiunta di uno screenshot per @ risposta di Haider.

Nota: Solo il testo evidenziato viene sottolineato, quindi è possibile evidenziare solo un intervallo specifico se lo si desidera.

enter image description here

ho finito sottolineando nel codice in ogni caso, solo perché non ho potuto ottenere Bold per lavorare in combinazione con Sottolineato per qualche motivo. Avrebbe potuto essere a causa del font che stavo usando, chissà.

@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) 
    } 
} 
Problemi correlati