0

ユーザーが画面をクリックすると、ユーザーが触れた場所に円が描画されます。私のコードの何が問題なのですか?

{
    BOOL _touchHasBegun;
    CGPoint whereUserClicked;
    float pointWhereUserClickedX;
    float pointWhereUserClickedY;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    _touchHasBegun = YES;
}

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(context, 0, 0, 225, 1);
    CGContextSetRGBFillColor(context, 0, 0, 255, 1);
    CGRect rectangle = CGRectMake(pointWhereUserClickedX, pointWhereUserClickedY, 10, 10);
    CGContextStrokeEllipseInRect(context, rectangle);
}
4

1 に答える 1

0

setNeedsDisplayまず、強制的に呼び出されるように呼び出す必要がありますdrawRect:。これは、タッチ イベント ハンドラから実行できます。

次に、タッチ ポイントの周りに円を描いているのではなく、タッチ ポイントを円の角として使用しています。

これにより、次のことが修正されます。

const CGFloat width = 10.0;
const CGFloat height = 10.0;
CGRect rectangle = CGRectMake(pointWhereUserClickedX - (width / 2.0),
                              pointWhereUserClickedY + (height / 2.0),
                              width,
                              height);
于 2013-02-26T11:57:16.537 に答える