我正在开发一个从 twitter 获取推文的 iPhone 应用程序。我正在通过 Json 执行此操作,并且一切正常。我正在搜索每条推文,看看它是否包含主题标签,然后更改该特定标签的颜色。
例如:“这是一条推文#MYTWEET”
所以我希望“这是一条推文”是一种颜色,而“#MYTWEET”是一种单独的颜色。我知道如何搜索主题标签,但我似乎无法弄清楚如何仅更改以下文本。
编辑:
也没有特定的主题标签,因此它需要能够更改出现的任何主题标签的颜色。
NSString *tweet = @"This is a tweet #MYTWEET";
NSArray *words = [tweet componentsSeparatedByString:@" "];
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:tweet];
for (NSString *word in words) {
if ([word hasPrefix:@"#"]) {
// Colour your 'word' here
NSRange matchRange = [tweet rangeOfString:word];
[attrString addAttribute:kCTForegroundColorAttributeName
value:[UIColor redColor]
range:matchRange];
// Remember to import CoreText framework (the constant is defined there)
}
}
//Display your attributed string ...
注意:如果您想知道如何显示字符串,这里有一个不错的开源项目:https ://github.com/AliSoftware/OHAttributedLabel
NSRange hashLocation = [tweetString rangeOfString:@"#MYTWEET"];
if (hashLocation.location == NSNotFound)
{
//do coloring stuff here
}
编辑:我认为您只想为子字符串着色。这在当前版本的 iOS 中是不可能的,但您可以通过为每种颜色创建一个标签并将它们彼此相邻放置,使其读起来像单行文本。
如果你使用 anUILabel
来显示字符串,你可以使用ActiveLabel.swift,它是一个支持 Hashtags (#)、Mentions (@) 和 URLs (http://)用 Swift 编写的UILabel
替代品。
更改用户名、主题标签和链接的颜色就这么简单:
label.textColor = .blackColor()
label.hashtagColor = .blueColor()
label.mentionColor = .greenColor()
label.URLColor = .redColor()
免责声明:我是图书馆的作者。