0

我以前看过这个问题,但我找不到答案..

正如预期的那样,程序启动时会自动调用 drawRect。但是,当我调用 [self setNeedsDisplay] drawRect 不再被调用时,我无法理解为什么......

//DrawView.m

[self setNeedsDisplay];

-(void)drawRect:(CGRect)rect{

NSLog(@ "Called_1");

//DRAW A PATH
 }

也许使用 self 是不正确的。我也尝试过使用 DrawImage,但它仍然不起作用。

//DrawView.h

@interface DrawView : UIView {

UIImageView *drawImage;
}

//DrawView.m

-(id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
    drawImage = [[UIImageView alloc] initWithImage:nil];
    drawImage.frame = CGRectMake( 0, 0, self.frame.size.width, self.frame.size.height );
    [self addSubview:drawImage];
}

return self;
}
4

1 回答 1

0

通常,当您想要重绘视图时,您应该调用:

[self setNeedsDisplay: YES];

当然,我从来没有在 iOS 上构建过,在 OSX 上,这段代码每次都有效。此外,例如,如果您希望您的委托为名为 someView 的视图调用重绘:

[someView setNeedsDisplay: YES];

注意: YES 是 obj-c 定义的宏,它的值只是 1。

于 2012-10-05T07:05:04.813 回答