我在NSView中得到错误的自定义背景颜色和黑色而不是背景图像

时间:2015-02-21 16:07:51

标签: objective-c macos cocoa

我正在尝试创建一个简单的应用程序,其中我有一个侧边栏,我正在尝试根据PSD文件中的RGB值获取背景颜色,要么使用背景图像作为模式....

我已经尝试过这两种方式,到目前为止还没有任何效果。任何帮助都将深表感谢。

-(void) drawRect:(NSRect)dirtyRect {
    CALayer *viewLayer = [CALayer layer];
    [viewLayer setBackgroundColor:CGColorCreateGenericRGB(85.0, 179.0, 217.0, 1.0)]; //RGB plus Alpha Channel
    [self setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
    [self setLayer:viewLayer];
}

此代码应显示蓝色,结果几乎是白色......甚至不接近我想要的。

第二个代码,显示黑色背景,甚至我的png文件位于支持文件的文件夹中。

- (void)drawRect:(NSRect)dirtyRect {
    NSGraphicsContext* theContext = [NSGraphicsContext currentContext];
    [theContext saveGraphicsState];
    [[NSGraphicsContext currentContext] setPatternPhase:NSMakePoint(0,[self frame].size.height)];
    [self.customBackgroundColour set];
    NSRectFill([self bounds]);
    [theContext restoreGraphicsState];
}

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.customBackgroundColour = [NSColor colorWithPatternImage:          
        [NSImage imageNamed:@"buttonBg.png"]];
    }
return self;
}

再一次,任何帮助都将深受赞赏。

1 个答案:

答案 0 :(得分:4)

如果我没记错的话,CGColorCreateGenericRGB需要0.0-1.0的范围,并解释为什么它是白色的。这应该解决白色问题。

[viewLayer setBackgroundColor:CGColorCreateGenericRGB(85.0/255.0, 179.0/255.0, 217.0/255.0, 1.0)]; //RGB plus Alpha Channel

希望这有帮助。