我使用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 {
//??
}
}
答案 0 :(得分:0)
一些评论:
您应该使用UIGestureRecognizer
,而不是覆盖UIView触摸事件方法。在您的情况下,UItapGestureRecognizer
可能就足够了。 (通过这种方式,处理不同触摸操作之间的冲突会更容易,这就是创建gestureRecognizers的原因!)
当您收到点按时,请更改视图的本地属性(例如,每次视图接收到点按时,可能会更改BOOL isRectangleDrawn
)
最后 - 那是您的代码中缺少的内容,否则应该是正确的 - 请勿忘记致电[self setNeedsDisplay]
以确保您的观看- (void) drawRect:(CGRect)rect
1}}方法被调用