2014-10-06 61 views
0

編輯: 我試圖展示一種iTunes風格的信息欄。這是前面詳細討論的主題,例如在iTunes or Xcode style information box at top of window 我只是稍微修改了上述引用鏈接中的代碼,因此請在最近的XCode下進行編譯。 我的代碼如下:類似iTunes的狀態欄

- (void)drawRect:(NSRect)dirtyRect 
{ 
    // Drawing code here. 
    static NSShadow *kDropShadow = nil; 
    static NSShadow *kInnerShadow = nil; 
    static NSGradient *kBackgroundGradient = nil; 
    static NSColor *kBorderColor = nil; 

    if (kDropShadow == nil) { 
     kDropShadow = [[NSShadow alloc] init]; 
     [kDropShadow setShadowColor:[NSColor colorWithCalibratedWhite:.863 alpha:.75]]; 
     [kDropShadow setShadowOffset:NSMakeSize(0.0, -1.0)]; 
     [kDropShadow setShadowBlurRadius:1.0]; 
     kInnerShadow = [[NSShadow alloc] init]; 
     [kInnerShadow setShadowColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.52]]; 
     [kInnerShadow setShadowOffset:NSMakeSize(0.0, -1.0)]; 
     [kInnerShadow setShadowBlurRadius:4.0]; 
     kBorderColor = [[NSColor colorWithCalibratedWhite:0.569 alpha:1.0] retain]; 
     // iTunes style 

     // kBackgroundGradient = [[NSGradient alloc] initWithColorsAndLocations:[NSColor colorWithCalibratedRed:0.929 green:0.945 blue:0.882 alpha:1.0],0.0,[NSColor colorWithCalibratedRed:0.902 green:0.922 blue:0.835 alpha:1.0],0.5,[NSColor colorWithCalibratedRed:0.871 green:0.894 blue:0.78 alpha:1.0],0.5,[NSColor colorWithCalibratedRed:0.949 green:0.961 blue:0.878 alpha:1.0],1.0, nil]; 

     // Xcode style 
     kBackgroundGradient = [[NSGradient alloc] initWithColorsAndLocations:[NSColor colorWithCalibratedRed:0.957 green:0.976 blue:1.0 alpha:1.0],0.0,[NSColor colorWithCalibratedRed:0.871 green:0.894 blue:0.918 alpha:1.0],0.5,[NSColor colorWithCalibratedRed:0.831 green:0.851 blue:0.867 alpha:1.0],0.5,[NSColor colorWithCalibratedRed:0.82 green:0.847 blue:0.89 alpha:1.0],1.0, nil]; 
    } 

    NSRect bounds = [self bounds]; 

    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:bounds xRadius:3.5 yRadius:3.5]; 

    [NSGraphicsContext saveGraphicsState]; 
    [kDropShadow set]; 
    [path fill]; 
    [NSGraphicsContext restoreGraphicsState]; 

    [kBackgroundGradient drawInBezierPath:path angle:-90.0]; 

    [kBorderColor setStroke]; 
    [path stroke]; 
} 

這是行不通的,但是。我不認爲drawRect()方法會被調用。我錯過了什麼?請指教。

謝謝

+0

嗨rckoenes,對不起。我沒有在stackoverflow配置文件中看到你的名字。我設法弄清楚爲什麼drawRect()沒有被調用。但是,代碼不起作用。我在我的NSView上看到黑色。我知道你編輯了我的問題,但不知道如何查看差異。如果你知道我做錯了什麼,請告知。我仍在研究這件作品。抱歉讓人煩惱。我是可可的新手。感謝您訪問我的問題[s]。 – 2014-10-07 10:29:36

回答

0

我不得不在最後一個額外的行: [路徑填充] 刪除它伎倆。