pme*_*ino 3 macos cocoa objective-c
我想用自定义NSColor背景([NSColor colorWithPatternImage:[NSImage imageNamed:@"pattern.png"]])设置自定义视图(不是主视图).我已经尝试制作自定义视图类:
.H
#import <AppKit/AppKit.h>
@interface CustomBackground : NSView {
NSColor *background;
}
@property(retain) NSColor *background;
@end
Run Code Online (Sandbox Code Playgroud)
.M
#import "CustomBackground.h"
@implementation CustomBackground
@synthesize background;
- (void)drawRect:(NSRect)rect
{
[background set];
NSRectFill([self bounds]);
}
- (void)changeColor:(NSColor*) aColor
{
background = aColor;
[aColor retain];
}
@end
Run Code Online (Sandbox Code Playgroud)
然后在AppDelegate中:
[self.homeView changeColor:[NSColor colorWithPatternImage:[NSImage imageNamed:@"pattern.png"]]];
Run Code Online (Sandbox Code Playgroud)
但没有任何反应,颜色保持不变.怎么了?或者有更简单的方法吗?NSView没有backgroundColor属性:(
尝试
[self.homeView setWantsLayer:YES];
self.homeView.layer.backgroundColor = [NSColor redColor].CGColor;
Run Code Online (Sandbox Code Playgroud)
最好使用setBackground:您从background酒店获得的已经制作的方法.所以用下面的changeColor:方法替换你
-(void)setBackground:(NSColor *)aColor
{
if([background isEqual:aColor]) return;
[background release];
background = [aColor retain];
//This is the most crucial thing you're missing: make the view redraw itself
[self setNeedsDisplay:YES];
}
Run Code Online (Sandbox Code Playgroud)
要更改视图的颜色,您可以简单地执行以下操作:
self.homeView.background = [NSColor colorWithPatternImage:[NSImage imageNamed:@"pattern.png"]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14110 次 |
| 最近记录: |