12

Ich möchte die Mail-ID in meiner Ansicht anzeigen, so dass durch Klicken auf die Mail-ID die Mail-Composer-Ansicht geöffnet werden soll.iPhone: Wie unterstrichener Text in einer Schaltfläche angezeigt wird?

Ich möchte den Schaltflächentext unterstrichen anzeigen, um anzuzeigen, dass es sich um einen Hyperlink handelt, und für das Ereignis click click, um die Mail-Composer-Ansicht aufzurufen. Momentan kann ich den Schaltflächentext nicht unterstrichen anzeigen.

Ich dachte, eine Beschriftung über der Schaltfläche zu platzieren und die Beschriftungseigenschaft anzupassen, um den unterstrichenen Text zu erhalten, aber das hat nicht funktioniert.

Gibt es einen anderen Weg, um das Aussehen und Verhalten, das ich will, zu bekommen?

+0

Hier ist wie in Storyboard (XCode 6) zu tun. http://stackoverflow.com/a/26930512/309046 – satish

Antwort

3

Eine andere Alternative besteht darin, ein Bild für die Schaltfläche festzulegen. Erstellen Sie ein Bild, das den entsprechenden Text anzeigt, und die Schaltfläche zeigt das anstelle von Text an.

Ich stimme Zack, dass die Unterstreichung Text redundant ist und die Grammatik der Schnittstelle verletzt. Sie unterstreichen den Text für Links an erster Stelle, um anzuzeigen, dass sie Verhalten wie Schaltflächen haben. Wenn sich der Text bereits in einer Schaltfläche befindet, muss er nicht unterstrichen werden, um anzuzeigen, dass er sich wie eine Schaltfläche verhält, da der Benutzer bereits eine Aktion als Reaktion auf das Klicken erwartet.

+1

Und wenn Sie Übersetzungen haben, @TechZen, müssen Sie Bild für jede Sprache vorbereiten? – new2ios

3

Um zu tun, was Sie wollen, müssten Sie CGContextStrokePath() verwenden, um die Unterstreichung auf dem CGLayer von UILabel zu zeichnen.

Das gesagt, würde ich Sie herausfordern, Ihre Designwahl zu überdenken. Wenn der Schaltflächentext als Hyperlink erscheint, wäre das eine Windows-Desktop-Anwendung (z. B. mit einem LinkLabel). Allerdings hat das iPhone OS aufgrund seines kleineren Bildschirms und der Notwendigkeit von größeren Zielen für die Berührungseingabe unterschiedliche Benutzeroberflächenkonventionen.

Die "Cocoa Touch" -Ansatz für dieses Problem wäre, eine Liste der E-Mail-IDs mit einem UITableView anzuzeigen. Geben Sie jeder Zeile eine entsprechende Zubehörtaste. Sie können zum Beispiel entweder UITableViewCellAccessoryDetailDisclosureButton oder UIButton mit buttonType von UIButtonTypeContactAdd) verwenden. Der Event-Handler des Zubehörknopfes würde dann den Mail-Composer aufrufen.

Viel Glück und glückliche Codierung!

0

Was ist, wenn Sie einen Link zu einer Website innerhalb eines Textblocks bereitstellen möchten? Der Benutzer benötigt eine visuelle Anzeige, der Text ist ein Link und wird sie irgendwo hinbringen.

Das blaue unterstrichene Hyperlink-Look ist die erwartete Norm, aber verstehen Sie, dass dies der PC Weg ist. Also, wie ist das iPhone?

Ich habe in der Vergangenheit eine benutzerdefinierte Schaltfläche ohne Hintergrund usw. und blauen Text verwendet, obwohl nicht unterstrichen, es erlaubt tappable Text.

Würde daran interessiert zu wissen, was andere tun ....

1

einfach, eine Webansicht mit und in einem Block von HTML-Plug beliebigen Text anzuzeigen, die iphone nicht tun können, aber HTML können.

+1

Einfach ist unterstrichen = JA. Wie ist das einfach? – Luda

+0

ja genau das ist einfach ....: D – EFE

5

Schnell 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

Seit iOS 6.0 können Sie NSAttributedString mit UIButton verwenden.

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

es in Interface Builder zu tun

  1. Klicken Sie auf die Schaltfläche/label
  2. Im Attribute-Inspektor, von einfachen
  3. Wählen Sie den Text Titel/Text zu Zugeschrieben ändern, die Sie möchten, zeigen.
  4. rechts darauf klicken> Goto Font-
  5. Unterstrichen
26

einen Screenshot für @ Haider Antwort Hinzufügen.

Hinweis: Nur der hervorgehobene Text wird unterstrichen, sodass Sie nur einen bestimmten Bereich unterstreichen können, wenn Sie möchten.

enter image description here

landete ich es im Code unterstreicht sowieso, nur weil ich nicht Bold arbeiten in Verbindung mit Unterstrichen aus irgendeinem Grund konnte. Könnte wegen der Schriftart sein, die ich benutzte, wer weiß.

@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) 
    } 
} 
Verwandte Themen