2012-08-11 81 views
0

我是新来的可可,我尝试设置NSGradientNSWindow背景,但它太困难,我...我也试试这个代码如何NSGradient设置为NSWindow背景

NSGradient *gradient = [[NSGradient alloc] initWithStartingColor:[NSColor orangeColor] endingColor:[NSColor lightGrayColor]]; 
NSRect windowFrame = [self frame]; 
[gradient drawInRect:windowFrame angle:90]; 

但它不是工作....任何其他方式来设置NSGradientNSWindow ....

+1

在该方法中,你有这样的代码?应该在'-drawRect:' – 2012-08-11 13:22:50

+0

是的,我在 - (void)drawRect方法中使用了 – NewStack 2012-08-13 04:33:13

回答

3

您可以通过继承NSWindow“观做到这一点。

创建新窗口视图的类(例如标题为WindowViewSubclass)。

然后.H文件应该是这样的:

#import <Cocoa/Cocoa.h> 

@interface WindowViewSubclass : NSView { 

} 

@end 

.M文件:

#import "WindowViewSubclass.h" 

@implementation WindowViewSubclass 

- (void)drawRect:(NSRect)dirtyRect 
{ 
    NSGradient *gradient = [[NSGradient alloc] initWithStartingColor:[NSColor orangeColor] endingColor:[NSColor lightGrayColor]]; 
    NSRect windowFrame = [self frame]; 
    [gradient drawInRect:windowFrame angle:90]; 
} 

@end 

现在选择窗口的显示方式,去身份Inspectory - >自定义类 - >并选择这样的班级:

Screenshot

结果:

Result image

+0

它仅适用于Window View ...但我需要将Gradient设置为NSWindow标题栏... – NewStack 2012-08-13 04:25:19

+0

我已将子类NSWindow但上面的代码不工作将​​坡度设置为NSWindow标题栏 – NewStack 2012-08-13 04:43:13

+0

@navinsillu如果您想更改标题栏颜色您需要使用无边框窗口遮罩并自行创建标题栏。 – 2012-08-20 12:18:27