正如标题所示,我需要强调UILabel的某个部分。例如:Please click ESPNSoccernet to read the latest Football News.
我想强调ESPNSoccernet这个词。这是因为我希望它可以点击,并且需要链接到网站。
需要一些指导才能做到这一点。如果还有其他办法,请告诉我......
答案 0 :(得分:14)
对于ios 6,您可以使用AttributedStrings
NSMutableAttributedString *yourString = [[NSMutableAttributedString alloc] initWithString:@"Please click ESPNSoccernet to read the latest Football News."];
[yourString addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:1]
range:(NSRange){0,25}];
label.attributedText = [yourString copy];
您还可以使用第三方UILable库TTTAttributedLabel。
答案 1 :(得分:2)
在Xcode中:
你去吧。
答案 2 :(得分:2)
Swift 2.0:
1)创建一个带有下划线属性的nsmutablestring并添加到sampleLabel的文本中。
2)向sampleLabel添加点击手势并关联方法以进行进一步操作。
override func viewDidLoad() {
super.viewDidLoad()
let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.")
newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue], range: NSMakeRange(4, 4))
sampleLabel.attributedText = newsString.copy() as? NSAttributedString
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapResponse:")
tapGesture.numberOfTapsRequired = 1
sampleLabel.userInteractionEnabled = true
sampleLabel.addGestureRecognizer(tapGesture)
}
func tapResponse(recognizer: UITapGestureRecognizer) {
print("tap")
}
答案 3 :(得分:1)
UILabel
只能显示纯文本字符串(在iOS 6中,它现在也可以显示NSAttributedString
,但这在旧的iOS版本中不起作用,所以最好不要依赖于此,所以你不能用标签来做这件事。
您可以查看TTTAttributedLabel以显示属性文本(这样您就可以添加下划线和其他格式),但您将无法使用此类添加超链接。
您对字符串的可点击片段的选项基本上是:
使用普通UILabel
并将UIButton
覆盖在您想要点击的部分上,或
使用TTTAttributedLabel
来实现下划线效果,使用UITapGestureRecognizer
来检测和处理点击(请注意,这会捕获整个标签上的点击,而不是只是加下划线的部分。)
对于iOS 6:
UILabel *label = [[UILabel alloc] init];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Tap here to read the latest Football News."];
[string addAttribute:NSUnderlineStyleAttributeName value:@(1) range:NSMakeRange(4, 4)];
label.attributedText = [string copy];
对于早期的iOS版本以及iOS 6:
TTTAttributedLabel *label = [[TTTAttributedLabel alloc] init];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Tap here to read the latest Football News."];
[string addAttribute:NSUnderlineStyleAttributeName value:@(1) range:NSMakeRange(4, 4)];
label.text = [string copy];
然后添加手势识别器并实施handleTap:
:
UITapGestureRecognizer *recogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[label addGestureRecognizer:recogniser];
- (void)handleTap:(UITapGestureRecognizer *)recogniser {
// Handle the tap here
}
答案 4 :(得分:1)
好吧,我做了同样的事情:
制作带文字的自定义按钮:ESPNSoccernet和背景clearColor 添加标签作为子视图,高度为1,并为此按钮添加一些背景颜色,使“ESPNSoccernet”显示为下划线。 将剩余的文本放在与此按钮相邻的标签中,使其看起来像一个完整的文本。
希望它有所帮助!
注意:如果你只做> iOS 6.0,你可能想检查其他答案。
答案 5 :(得分:0)
如果这个应用程序适用于ios 6或更高版本,那么你可以使用NSMutableAttributedString
NSMutableAttributedString *labelText = [[NSMutableAttributedString alloc] initWithString:@"Hello this is demmy label for testing"];
[labelText addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1]
range:(NSRange){10,10}];
label.attributedText = labelText;
对于较少版本,您可以像这样使用..
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 116, 171, 20)];
label.text = @"Hello this is demmy label for testing";
label.textColor = [UIColor whiteColor];
label.font = [UIFont systemFontOfSize:16];
[self.view addSubview:label];
//underline code
CGSize expectedLabelSize = [[m_BCListArray objectAtIndex:tagcount] sizeWithFont:label.font constrainedToSize:label.frame.size lineBreakMode:UILineBreakModeWordWrap];
UIView *viewUnderline=[[UIView alloc] init];
viewUnderline.frame=CGRectMake((label.frame.size.width - expectedLabelSize.width)/2, expectedLabelSize.height + (label.frame.size.height - expectedLabelSize.height)/2, expectedLabelSize.width, 1);
viewUnderline.backgroundColor=[UIColor whiteColor];
[self.view addSubview:viewUnderline];
答案 6 :(得分:0)
以下代码段产生了所需的结果:
NSDictionary *dictAttribute = @{NSForegroundColorAttributeName:[UIColor redColor],NSUnderlineStyleAttributeName:@1};
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"Please click ESPNSoccernet to read the latest Football News." attributes:dictAttribute];
lblText.attributedText = attrString;
答案 7 :(得分:-2)
您可以使用UIWebView
并为其插入一些HTML代码以获得所需的格式。 HTML还包括能够超链接的奖励,尽管网页将包含在Web视图本身内。
编辑:此方法适用于iOS 2.0及更高版本,因此旧设备上没有问题。
要执行此操作,请在所需视图中添加UIWebView
并为其创建一个插座(出于演示目的,我将称之为我的webView
)。
在viewDidLoad
方法中,添加:
NSString *HTML = @"<p>Please click <a href=\"http://www.espnfc.com\">ESPNSoccernet</a> to read the latest Football News</p>";
[webView loadHTMLString:HTML baseURL:nil];
希望这会有所帮助......