现在我正在使用
NSShadow *textShadow = [NSShadow new];
textShadow.shadowBlurRadius = 5;
textShadow.shadowColor = [[NSColor whiteColor] colorWithAlphaComponent:.5];
[self addAttribute:NSShadowAttributeName value:textShadow range:NSMakeRange(0, self.length)];
从NSTextStorage为文本提供阴影。但我想应用多个阴影,添加另一个NSShadowAttributeName
只会覆盖以前的值。
如何添加多个阴影?是否可以使用CGContextSetShadowWithColor
完成?
答案 0 :(得分:3)
不确定请在下面的代码中尝试使用textview。当您在textview中编写字符串时,它将选择那么多范围,并在此基础上绘制颜色: -
-(IBAction)createNewTabView:(id)sender
{
NSString *allTheText =[tv string];
NSArray *lines = [allTheText componentsSeparatedByString:@"\n"];
NSString *str=[[NSString alloc]init];
NSMutableAttributedString *attr;
BOOL isNext=YES;
[tv setString:@""];
for (str in lines)
{
attr=[[NSMutableAttributedString alloc]initWithString:str];
if ([str length] > 0)
{
NSRange range=NSMakeRange(0, [str length]);
[attr addAttribute:NSBackgroundColorAttributeName value:[NSColor greenColor] range:range];
[tv .textStorage appendAttributedString:attr];
isNext=YES;
}
else
{
NSString *str=@"\n";
NSAttributedString *attr=[[NSAttributedString alloc]initWithString:str];
[tv .textStorage appendAttributedString:attr];
isNext=NO;
}
if (isNext==YES)
{
NSString *str=@"\n";
NSAttributedString *attr=[[NSAttributedString alloc]initWithString:str];
[tv .textStorage appendAttributedString:attr];
}
}
}
答案 1 :(得分:2)
我会建议“穴居人”的做法。不要试图获得重复的阴影,而是使用重复的文本,除了其中一个的颜色设置为清晰的颜色,并给它们不同的dropShadows。
如果您打算多次使用它,您应该能够创建一个自动化的类。
这是我得到的样本:
哦 - 如果你没有制作附加文字,你的文字会比你想象的更暗/更大。