用户触摸时制作圆圈

时间:2013-02-26 11:35:36

标签: objective-c quartz-graphics

当用户点击屏幕时,应该在用户触摸的位置绘制圆圈。我的代码怎么了?

{
    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);
}

1 个答案:

答案 0 :(得分: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);