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 回答