gpt4 book ai didi

objective-c - NSGradient 转换为 NSColor

转载 作者:行者123 更新时间:2023-12-03 17:51:02 25 4
gpt4 key购买 nike

好吧,长话短说:

  • 我正在使用(嵌入到 bundle 中)FontAwesome
  • 我将它用作一些自定义 NSButton 中的字体
  • NSButton 子类中,我想为它们着色,就像 Xcode 选项卡项目的着色方式一样

Colour gradient 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 步:

基于 great answerNSColor 上创建一个类别通过@Omz。在下面的代码中,您将看到它被重命名为 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];

第 3 步:

享受结果。 :-)

NSGradient to NSColor applied to FontAwesome

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com