NSAttributedString:如何使用颜色模拟不透明度或等效的Alpha

问题描述

我正在使用NSAttributedString作为按钮标题,并且希望能够“灰显”或降低某些文本的字母或容量。 NSAttributedString似乎不允许您修改文本的不透明度或alpha值,但可以使用以下方法调整颜色:

NSMutableAttributedString *text = 
 [[NSMutableAttributedString alloc] 
   initWithAttributedString: label.attributedText];
[text addAttribute:NSForegroundColorAttributeName 
             value:[UIColor redColor] 
             range:NSMakeRange(10,1)];

或:

let range = (mainString as Nsstring).range(of: stringToColor)
let mutableAttributedString = NSMutableAttributedString.init(string: mainString)
mutableAttributedString.addAttribute(NSAttributedString.Key.foregroundColor,value: UIColor.red,range: range)

在这种情况下,起始颜色为系统蓝色。是否有任何公式可以让我将系统颜色修改为等效于0.5的alpha值(或不透明度)?

谢谢您的建议。

解决方法

您可以使用更改任何颜色alpha

UIColor.red.withAlphaComponent(0.5)

当然,您必须知道原始颜色。

没有通用的alpha修饰符。