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