Установка цвета фона NSView - PullRequest
       2

Установка цвета фона NSView

3 голосов
/ 24 сентября 2011

Я хочу установить пользовательское представление (не основное) с пользовательским фоном NSColor ([NSColor colorWithPatternImage:[NSImage imageNamed:@"pattern.png"]]). Я пытался создать пользовательский класс представления:

.h

#import <AppKit/AppKit.h>

@interface CustomBackground : NSView {
    NSColor *background; 
}
@property(retain) NSColor *background;
@end

.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

А затем в AppDelegate:

[self.homeView changeColor:[NSColor colorWithPatternImage:[NSImage imageNamed:@"pattern.png"]]];

Но ничего не происходит, цвет остается прежним. В чем дело? Или есть более простой способ? NSView не имеет свойства backgroundColor: (

Ответы [ 2 ]

9 голосов
/ 20 июня 2014

Попробуйте

[self.homeView setWantsLayer:YES];
self.homeView.layer.backgroundColor = [NSColor redColor].CGColor;
6 голосов
/ 25 сентября 2011

Лучше всего использовать уже созданный метод 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];
}

Чтобы изменить цвет вашего взгляда, вы можете просто сделать:

self.homeView.background = [NSColor colorWithPatternImage:[NSImage imageNamed:@"pattern.png"]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...