2

我正在开发一个从 twitter 获取推文的 iPhone 应用程序。我正在通过 Json 执行此操作,并且一切正常。我正在搜索每条推文,看看它是否包含主题标签,然后更改该特定标签的颜色。

例如:“这是一条推文#MYTWEET”

所以我希望“这是一条推文”是一种颜色,而“#MYTWEET”是一种单独的颜色。我知道如何搜索主题标签,但我似乎无法弄清楚如何仅更改以下文本。

编辑:

也没有特定的主题标签,因此它需要能够更改出现的任何主题标签的颜色。

4

3 回答 3

11
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

于 2012-07-18T19:54:43.670 回答
0
 NSRange hashLocation = [tweetString rangeOfString:@"#MYTWEET"];
 if  (hashLocation.location == NSNotFound) 
      {
          //do coloring stuff here
      }

编辑:我认为您只想为子字符串着色。这在当前版本的 iOS 中是不可能的,但您可以通过为每种颜色创建一个标签并将它们彼此相邻放置,使其读起来像单行文本。

于 2012-07-18T18:29:06.567 回答
0

如果你使用 anUILabel来显示字符串,你可以使用ActiveLabel.swift,它是一个支持 Hashtags (#)、Mentions (@) 和 URLs (http://)用 Swift 编写的UILabel替代品。

在此处输入图像描述

更改用户名、主题标签和链接的颜色就这么简单:

label.textColor = .blackColor()
label.hashtagColor = .blueColor()
label.mentionColor = .greenColor()
label.URLColor = .redColor()

免责声明:我是图书馆的作者。

于 2015-09-04T17:26:36.327 回答