我正在实现一个iOS应用程序,并且有两个字符串连接并插入到标签中。我想给第一个字符串一个不同于第二个字符串的颜色。
这是我的字符串,它们是串联的......
NSString * dateVale = [date objectAtIndex:indexPath.row];
NSString * addressValue = [address objectAtIndex:indexPath.row];
TextLabel.text = [NSString stringWithFormat:@"%@ \n%@",dateVale,addressValue];
那么如何给第一个字符串一个蓝色?
提前致谢。
答案 0 :(得分:3)
要走的路是使用NSAttributedStrings。 NSAttributedString对象表示具有关联属性集的字符串。从iOS6开始,UIKit在UILabels和其他组件中添加了对NSAttributedStrings的支持。
对于以前的iOS版本,您可以使用支持NSAttributedStrings的第三方组件,例如:OHAttributedLabel,TTTAttributedLabel或Nimbus Attributed Label。这些组件是使用CoreText实现的,CoreText是iOS中文本呈现的低级框架。我建议您使用其中一个组件,而不是尝试使用CoreText。
如果您需要更复杂的样式或行为,也可以使用UIWebView,但这是一种更重量级的方法。
答案 1 :(得分:1)
在小于6.0的iOS中,除非您使用第三方类,否则不支持您的请求。我个人试图避免第三方课程,因为它发生了很多次,在未来的iOS更新中,这些第三方课程中的一些不再被Apple批准。但是我在你的输出中注意到你将每个文本放在一个单独的行上(来自\n
):
TextLabel.text = [NSString stringWithFormat:@"%@ \n%@",dateVale,addressValue];
由于你有一个在一行,如果你想避免使用第三方类,你可以简单地使用两个UILabel
并给每个人你想要的格式,在这种情况下你会做:< / p>
TextLabel01.text = [NSString stringWithFormat:@"%@", dateVale];
TextLabel02.text = [NSString stringWithFormat:@"%@", addressValue];
顺便说一句,即使它们在同一行,您仍然可以使用2个单独的UILabel
,并且您可以使用{{1来计算文本宽度,动态地使用每个标签的frame
}}
答案 2 :(得分:0)
使用NSAttributed String。条件是你必须使用第三方类attributed Label ie TTTAttributedLabel
修改强>
TTTAttributedLabel与ios 5.1及更高版本兼容。
注意ios6的UILabel支持NSAttributedString,不需要使用thirdparty类标签。