0

drawRect: メソッドで低レベルの描画を行うカスタマイズされた UIView があります。ビューを XIB ファイルでインスタンス化すると、正常に動作します。ただし、プログラムでインスタンス化すると、事態は奇妙になります。

MyView *view = [[MyView alloc] initWithFrame: rect];

[self.view addSubView: view]; 

drawRect: メソッドが実行されるたびに、結果のビューには、以前の呼び出しで作成された古い図面と重なった現在の図面が含まれているように見えます。つまり、 drawRect: が呼び出されたときにビューがクリアされていないように見えます。

4

2 に答える 2

0

viewDidLoad メソッドまたは任意の場所でこのコードを確認してみましょう。また、rect フレーム サイズが nill または 0 であってはならないことを確認します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    MyView *view = [[MyView alloc] initWithFrame: rect];

    NSLog(@"rect size %@  %@",NSStringFromCGRect(rect.bounds),NSStringFromCGRect(view.bounds));

    view.backGroundCOlor = [UIColor redColor];

    [self.view addSubView: view]; 
}

動作しているかどうかを確認してください。

于 2013-07-04T05:30:59.483 に答える