Objective c NSColor渐变为NSColor
好吧,长话短说:Objective c NSColor渐变为NSColor,objective-c,xcode,cocoa,nscolor,nsgradient,Objective C,Xcode,Cocoa,Nscolor,Nsgradient,好吧,长话短说: 我正在使用(嵌入到包中)FontAwesome 我在一些定制的NSButtons中使用它作为字体 在NSButton子类中,我想给它们上色,与Xcode选项卡项的上色方式完全相同 这就是我设置颜色的方式(作为简单的NSColor): 如何将其设置为NSGradient?好的,这是一个解决方案,适用于任何可能发现有用的人 第1步: 根据@Omz的命令,在NSColor上创建一个类别。在下面的代码中,您将看到它被重命名为colorFromGradient:,这仅仅是为了与常用
- 我正在使用(嵌入到包中)FontAwesome
- 我在一些定制的
s中使用它作为字体NSButton
- 在
子类中,我想给它们上色,与Xcode选项卡项的上色方式完全相同NSButton
如何将其设置为
NSGradient
?好的,这是一个解决方案,适用于任何可能发现有用的人
第1步:
根据@Omz的命令,在NSColor
上创建一个类别。在下面的代码中,您将看到它被重命名为colorFromGradient:
,这仅仅是为了与常用的Cocoa命名约定很好地结合在一起
第二步:
用渐变色重画标题
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];
第三步:
享受结果。:-)
colorFromGradient:似乎不再是有效的API。
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];