按下按钮后,SetNeedsDisplay为DrawRect

时间:2012-03-18 18:49:19

标签: xcode cocoa nsrect

我在NSView上的自定义类中有这个,当我使用drawMyRec IBAction按下按钮时,我想改变我的NSRect的颜色但是这不起作用,任何人都可以帮忙吗?

#import "myView.h"

@implementation myView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        RectColor = [[NSColor blackColor] init];
    }

    return self;
}


- (IBAction)drawMyRec:(id)sender;
{
    NSLog(@"pressed");
    RectColor = [[NSColor blueColor] init];
    [self setNeedsDisplay:YES];
}


- (void)drawRect:(NSRect)dirtyRect
{
    NSRectFill(dirtyRect);
    [RectColor set];

}

@end

2 个答案:

答案 0 :(得分:2)

首先,为什么要在-init上拨打NSColor?其次,在绘制矩形之后,你是set颜色,所以在下次重绘之前它不会生效。 3,调用dirtyRect-drawRect:是什么?为什么不填写整个矩形而不管什么是脏的?

答案 1 :(得分:2)

您的drawRect功能不正确。改为:

- (void)drawRect:(NSRect)dirtyRect
{
    [RectColor set];
    NSRectFill(dirtyRect);

}