好吧,长话短说:


我正在使用(嵌入到捆绑包中)FontAwesome
我将其用作某些自定义NSButton中的字体
NSButton子类中,我想给它们上色,正是Xcode选项卡上色的方式




这就是我设置颜色的方式(作为简单的NSColor):

    NSColor *color = [NSColor colorWithCalibratedRed:0.09 green:0.55 blue:0.90 alpha:1.0];
    NSMutableAttributedString *colorTitle =
    [[NSMutableAttributedString alloc] initWithAttributedString:[self attributedTitle]];

    NSRange titleRange = NSMakeRange(0, [colorTitle length]);

    [colorTitle addAttribute:NSForegroundColorAttributeName
                       value:color
                       range:titleRange];

    [self setAttributedTitle:colorTitle];


如何将其设置为NSGradient

最佳答案

好的,这是解决方案,适用于可能会发现有用的任何人...

步骤1:

基于@Omz的great answerNSColor上创建类别。在下面的代码中,您将看到它被重命名为colorFromGradient:,仅仅是为了与通常的Cocoa命名约定很好地结合在一起。

第2步:

用渐变色重画标题

    NSColor* gS = [NSColor colorWithCalibratedRed:0.07 green:0.47 blue:0.87 alpha:1.0];
    NSColor* gE = [NSColor colorWithCalibratedRed:0.12 green:0.64 blue:0.94 alpha:1.0];
    NSGradient* g = [[NSGradient alloc] initWithStartingColor:gE endingColor:gS];
    NSColor *color = [NSColor colorFromGradient:g];

    NSMutableAttributedString *colorTitle =
    [[NSMutableAttributedString alloc] initWithAttributedString:[self attributedTitle]];

    NSRange titleRange = NSMakeRange(0, [colorTitle length]);

    [colorTitle addAttribute:NSForegroundColorAttributeName
                       value:color
                       range:titleRange];

    [self setAttributedTitle:colorTitle];


第三步:

享受结果。 :-)

关于objective-c - NSGradient转换为NSColor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26358368/

10-09 06:45