2014-10-06 62 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

我不得不在最后一个额外的行: [路径填充] 删除它伎俩。