使用UIBezierPath重绘矩形

时间:2014-04-07 13:27:07

标签: ios uiview uibezierpath

我使用UIBezierPath绘制一个初始的简单rect并用颜色填充它。如何通过触摸来改变其颜色?

- (void) drawRect:(CGRect)rect
{
    // Drawing code
    [self drawRectWithFrame:_myRect fillColor:_firstColor];
}
- (void) drawRectWithFrame:(CGRect)frame fillColor:(UIColor *)color
{
    [color setFill];
    UIBezierPath *path = [UIBezierPath bezierPathWithRect:frame];
    [path fill];
}
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //get the rect color from touches (pixel color)     
    UIColor *color = [self getRectColorFromTouches:touches];

    //chnage the rect color
    if (color == _firstColor) {

    //doesn't work
    //[self drawRectWithFrame:_myRect fillColor:_secondColor]; //??
        //How can I do that?
    }
    else {
        //??
    }    
}

1 个答案:

答案 0 :(得分:0)

一些评论:

  • 您应该使用UIGestureRecognizer,而不是覆盖UIView触摸事件方法。在您的情况下,UItapGestureRecognizer可能就足够了。 (通过这种方式,处理不同触摸操作之间的冲突会更容易,这就是创建gestureRecognizers的原因!)

  • 当您收到点按时,请更改视图的本地属性(例如,每次视图接收到点按时,可能会更改BOOL isRectangleDrawn

  • 最后 - 那是您的代码中缺少的内容,否则应该是正确的 - 请勿忘记致电[self setNeedsDisplay]以确保您的观看- (void) drawRect:(CGRect)rect 1}}方法被调用