objective c - developer - ¿Cómo le doy a NSText múltiples sombras?
objective c documentation (2)
En este momento estoy usando
NSShadow *textShadow = [NSShadow new];
textShadow.shadowBlurRadius = 5;
textShadow.shadowColor = [[NSColor whiteColor] colorWithAlphaComponent:.5];
[self addAttribute:NSShadowAttributeName value:textShadow range:NSMakeRange(0, self.length)];
desde un NSTextStorage para dar sombra al texto. Pero quiero aplicar más de una sombra, y agregar otro NSShadowAttributeName
simplemente sobrescribe el valor anterior.
¿Cómo puedo agregar más de una sombra? ¿Se puede hacer con CGContextSetShadowWithColor
?
No estoy seguro por favor intente este código a continuación para su texto. Cuando escribes una cadena dentro de la vista de texto, seleccionará ese rango y, basándose en eso, dibujará el color: -
-(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];
}
}
}
Yo sugeriría el enfoque de "cavernícola". En lugar de tratar de obtener sombras duplicadas, use los textos duplicados, todos menos uno de ellos tienen su color definido en el color claro, y asígneles diferentes sombras.
- haga dos o más textos que se alineen exactamente.
- haga que el frente sea su color de texto "real".
- hacer el color claro del otro texto.
- establece un tipo de sombra para cada tipo de texto.
Debería poder hacer una clase que automatice esto, si va a usarlo varias veces.
Esta es una muestra de lo que obtuve:
oh-- si no haces el texto adicional, tu texto aparecerá mucho más oscuro / más audaz de lo esperado.