0

私は iOS を初めて使用します。ループ内のビューでの描画に問題があります。これは、クラス MyView.m の drawRect メソッドです。

`

-(void)drawRect:(CGRect)rect
 {
     self.backgroundColor = [UIColor blackColor];
    x = rand() % (200 - 0) + 0;
    y = rand() % (200 - 0) + 0;
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, 0, 0);
    CGContextAddLineToPoint(context, 160+x, 150+y);
    CGContextAddLineToPoint(context, 160+x, 120+y);
    CGContextAddLineToPoint(context, 200+x, 200+y);
    CGContextAddLineToPoint(context, 200+x, 170+y);
    CGContextAddLineToPoint(context, 250+x, 250+y);

    CGContextClosePath(context);
    [[UIColor whiteColor] setFill];
    [[UIColor redColor] setStroke];
    CGContextDrawPath(context, kCGPathFillStroke);
    NSLog(@"drawRect x: %d,%d",x,y);
  }

`

MyView は、xib のサブビューとして ViewController に追加されます。

これは、viewController.m の while ループです。

    -(void)buttonClicked:(id)sender
{
    while (TRUE) {


        NSLog(@"while");
        NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(reDraw)object:nil];
        [myThread start];
   // [NSThread detachNewThreadSelector:@selector(reDraw) toTarget:self withObject:nil];        
        //[self performSelector:@selector(reDraw) withObject:nil afterDelay:1];
        NSLog(@"after sleep");
          }
}


-(void)reDraw {
    [myView setNeedsDisplay];

}

buttonClicked は、setNeedsDisplay メソッドを反復するループ中にボタンを押して開始するときに呼び出されるメソッドです。問題は、ボタンを押すとすべてが機能しなくなり、図面を受け入れることです。ボタンがクリックされたままになり、他のすべてのコンポーネントが停止します。

4

1 に答える 1