0

この質問が以前に投稿されたのを見たことがありますが、答えが見つかりません。

予想どおり、プログラムの起動時にdrawRectが自動的に呼び出されます。しかし、[self setNeedsDisplay]を呼び出すと、drawRectが呼び出されなくなり、その理由がわかりません...

//DrawView.m

[self setNeedsDisplay];

-(void)drawRect:(CGRect)rect{

NSLog(@ "Called_1");

//DRAW A PATH
 }

たぶん自己を使うのは間違っています。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 に答える