objective-c - windows安裝xcode - xcode安裝




我如何給NSText多個陰影? (2)

現在我正在使用

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來完成嗎?


不知道請為您的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[email protected]"\n";
            NSAttributedString *attr=[[NSAttributedString alloc]initWithString:str];
            [tv .textStorage appendAttributedString:attr];
            isNext=NO;
        }
        if (isNext==YES)
        {
            NSString *str[email protected]"\n";
            NSAttributedString *attr=[[NSAttributedString alloc]initWithString:str];
            [tv .textStorage appendAttributedString:attr];

        }

    }
    }

我會建議“穴居人”的做法。 而不是試圖獲得重複的陰影,使用重複的文字,除了其中之一,它的顏色設置為清晰的顏色,並給他們不同的陰影。

  • 讓兩個或更多的文本正好對齊。
  • 讓最前面的“真實”的文字顏色。
  • 使其他文字的顏色清晰。
  • 為每種類型的文本設置一種類型的陰影。

如果你打算多次使用它,你應該可以創建一個自動化的類。

這是我得到的一個樣本:

哦,如果你不添加額外的文字,你的文字將會比你想像的更加黑暗/大膽。





osx-mountain-lion