好吧,长话短说:
我正在使用(嵌入到捆绑包中)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 answer在NSColor
上创建类别。在下面的代码中,您将看到它被重命名为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/