TextView,iOS和OSX中的彩虹文本

时间:2014-03-12 10:47:40

标签: objective-c macos cocoa nsattributedstring

我试图为我的应用添加一些不同的文字颜色以融合到图片中。我有很多输入,我的用户想要彩虹文字颜色并重复。例如,stackoverflow这个词看起来像这样:s=red t=orange a=yellow c=green k=blue o=purple v=pink e=red r=orange f=yellow l=green o=blue w=purple

我甚至无法开始考虑如何在一个UITextView中做到这一点 有没有人知道如何在用户输入时实现这一目标?提示?实施例

关于iOS的彩虹文字,我没有看到关于SO的任何其他帖子。 (纠正我,如果我错了)

1 个答案:

答案 0 :(得分:8)

您可以使用NSAttributedString

使其成为支持OSX和iOS的通用方法。现在无需将NSColor更改为UIColor,在两个操作系统上都使用此功能。

#if TARGET_OS_IPHONE
    typedef UIColor Color;
#elif TARGET_OS_MAC
    typedef NSColor Color;
#endif

-(NSAttributedString *)colorfulStringFrom:(NSString *)string{

    NSArray *colors = @[[Color redColor],
                        [Color yellowColor],
                        [Color greenColor],
                        [Color blueColor],
                        [Color purpleColor],
                        [Color magentaColor]
                        ];

    NSMutableAttributedString *attribString = [[NSMutableAttributedString alloc]initWithString:string];

    for (NSInteger location=0; location<string.length; location++) {
        NSRange range = NSMakeRange(location, 1);
        Color *color = colors[location%colors.count];
        [attribString addAttribute:NSForegroundColorAttributeName value:color range:range];
    }
    return attribString;
}

输出:

enter image description here