0

我正在实现一个 iOS 应用程序,并将两个字符串连接起来并插入到一个标签中。我想给第一个字符串与第二个字符串不同的颜色。

这是我的字符串,它们被连接起来......

NSString *dateVale=[日期 objectAtIndex:indexPath.row];
NSString *addressValue=[地址 objectAtIndex:indexPath.row];

TextLabel.text = [NSString stringWithFormat:@"%@ \n%@",dateVale,addressValue];

那么如何给第一个字符串一个蓝色呢?

提前致谢。

4

3 回答 3

3

要走的路是使用 NSAttributedStrings。NSAttributedString 对象表示具有相关属性集的字符串。从 iOS6 UIKit 开始,在 UILabel 和其他组件中添加了对 NSAttributedStrings 的支持。

对于以前的 iOS 版本,您可以使用支持 NSAttributedStrings 的第三方组件,例如:OHAttributedLabelTTTAttributedLabelNimbus Attributed Label。这些组件是使用 CoreText 实现的,CoreText 是 iOS 中用于文本呈现的低级框架。我建议您使用这些组件之一,而不是尝试使用 CoreText。

如果您需要更复杂的样式或行为,您也可以使用 UIWebView,但它是一种更重量级的方法。

于 2012-08-24T10:48:58.543 回答
1

在低于 6.0 的 iOS 中,除非您使用第三方类,否则不支持您的请求。就我个人而言,我尽量避免使用第三方类,因为在未来的 iOS 更新中,其中一些第三方类不再获得 Apple 的批准。但是我在您的输出中注意到您将每个文本放在单独的行上(来自\n):

TextLabel.text = [NSString stringWithFormat:@"%@ \n%@",dateVale,addressValue];

由于您将每个都放在一行中,并且如果您想避免使用第三方类,则可以简单地使用两个UILabels 并为每个 s 提供所需的格式,在这种情况下,您将执行以下操作:

TextLabel01.text = [NSString stringWithFormat:@"%@", dateVale];
TextLabel02.text = [NSString stringWithFormat:@"%@", addressValue];

顺便说一句,即使它们在同一行,您仍然可以使用 2 个单独UILabel的 s,并且您可以frame通过使用 计算文本宽度来动态地使用每个标签sizeWithFont

于 2012-08-24T11:32:58.170 回答
0

使用 NSAttributed 字符串。条件是你必须为属性标签使用第三方类,即 TTTAttributedLabel

编辑

TTTAttributedLabel 兼容 ios 5.1 及更高版本。

注意 ios6 的 UILabel 支持 NSAttributedString 不需要使用第三方类标签。

于 2012-08-24T10:39:39.633 回答