2010-04-15 115 views
12

我想在我的视图中显示邮件ID,以便单击邮件ID应打开邮件编辑器视图。iPhone:如何在按钮中显示带下划线的文字?

我想显示下划线的按​​钮文本以显示它是一个超链接,并且按钮单击事件可以调用邮件编辑器视图。目前,我无法显示加下划线的按​​钮文字。

我想在按钮上方放置一个标签,并调整标签属性以获得带下划线的文本,但这并不起作用。

有没有不同的方式来获得我想要的外观和行为?

+0

以下是如何在故事板(XCode 6)中执行相同操作。 http://stackoverflow.com/a/26930512/309046 – satish 2015-03-03 09:39:01

回答

3

另一种替代方法是设置按钮的图像。创建一个显示适当文本的图像,该按钮将显示该文本而不是文本。

我同意扎克强调文本是多余的,违反了接口语法。您首先在链接文本中标明文字,以表明它们具有按钮之类的行为。如果文本已经在按钮中,则不需要将其强调为表示它的行为类似于按钮,因为用户已经期望响应于点击它的动作。

+1

如果你有翻译,@ TechZen,你必须为每种语言准备图像? – new2ios 2015-04-30 12:52:49

3

要做你想做的事,你需要使用CGContextStrokePath()在UILabel的CGLayer上绘制下划线。

这就是说,我会挑战你重新考虑你的设计选择。使按钮文本显示为超链接对于Windows桌面应用程序来说是合理的(例如,使用LinkLabel)。但是,iPhone OS具有不同的用户界面惯例,因为它的屏幕更小,并且需要更大的目标以适应触摸输入。

这个问题的“Cocoa Touch”方法是使用UITableView显示邮件ID列表。为每行提供适当的附件按钮。例如,您可以使用UITableViewCellAccessoryDetailDisclosureButtonUIButtonbuttonTypeUIButtonTypeContactAdd)。附件按钮事件处理程序然后将调出邮件编辑器。

祝你好运,快乐的编码!

0

那么,如果你想提供一个文本块内的网站链接?用户需要一些视觉指示文字是一个链接,并将他们带到某个地方。

蓝色加下划线的超链接外观是预期的规范,但明白这是PC方式。那么iPhone的方式是什么?

我在过去使用了一个自定义按钮,没有背景等和蓝色文本,虽然没有下划线,它确实允许可点击文本。

很想知道别人怎么做....

1

简单,使用网页视图并插入HTML块,以显示iPhone不能做,但HTML可以任何文本。

+1

简单的是underline = YES。这很简单吗? – Luda 2013-04-21 09:07:18

+0

对,这就是简单的....:D – EFE 2015-09-29 16:56:04

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 
} 

目标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

由于iOS的6.0你可以使用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

要做到这一点在Interface Builder

  1. 点击按钮/标签
  2. 在属性检查器中,改变标题/文本从纯
  3. 归因选择您想要的文字以显示。
  4. 右键点击它转到字体 - >下划线
26

增加对@海德尔的答案截图。

注意:只有突出显示的文本才会加下划线,所以如果需要,您可以强调一个特定的范围。

enter image description here

我结束了在代码中强调也无妨,只是因为我无法得到大胆连同下划线工作的某些原因。可能是因为我使用的字体,谁知道。

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