1

このコードが正しく実行されていない理由。setNeedsDisplayとsetNeedsLayoutを試しましたが、このコードは実行されていないようです。実行しても、想定外のときに実行され、間違って実行されます。つまり、間違った場所にランダムな長さで線が引かれます。-(void)drawNW {

NSLog(@"%f",x1);
NSLog(@"%f",y1);

CGContextSetStrokeColorWithColor(c, [UIColor blueColor].CGColor);
CGContextSetLineWidth(c, 10.0);
CGContextMoveToPoint(c, x1, y1);
CGContextAddLineToPoint(c, -(sqrtf(2)/2)*length + x1, ((sqrtf(2)/2)*length + y1));
CGContextStrokePath(c);

length = line.bounds.size.height;

}

長さ、x1、およびy1は、NSTimerによって0.1秒間隔で絶えず変化するフロートです。

 NWTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(startMoving) userInfo:nil repeats:YES];

タイマーは、drawNWを呼び出すこのコードを呼び出します。

x1 = x1-2.5;
y1 = y1-2.5;
length= length+5;
[self drawNW];
4

1 に答える 1

0

描画用のコード (CGContext... など) は、クラスのdrawRectメソッド内にある必要があります。タイマー駆動のコードは、x1、y1、および長さの値を変更してから、 を呼び出す必要があります[self setNeedsDisplay]。これは、ビューを再描画する必要があることを iOS に伝えるため、それdrawRectが呼び出されます。

必要な場所に線を引く限り、このコードで何をしようとしているかはわかりません。

于 2013-03-24T00:22:03.277 に答える