我有一个自定义UIView
,我希望在其中显示简单的动画形状以响应触摸。例如:
我现在正在做的事情(参见下面的代码)是使用touchesBegan
,touchesMoved
等来设置一个包含所有触摸的集合。然后在drawRect
中为每个触摸画一个圆圈。一切都是超静态的。
动画制作的最佳方式是什么?
谢谢!
PS:完整性在这里是我的代码的一部分
- (void)drawRect:(CGRect)rect
{
for (UITouch *touch in ts) { //ts is the set with all touches
CGPoint location = [touch locationInView:touch.view];
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rectangle = CGRectMake(location.x-circleSize/2, location.y-circleSize/2+correctionY,
circleSize*1.15, circleSize*1.15);
CGContextAddRect(context, rectangle);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextFillEllipseInRect(context, rectangle);
/* etc etc */
}
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
/* etc etc */
ts = [[NSMutableSet setWithSet: [event touchesForView:self]] retain];
/* etc etc */
}
答案 0 :(得分:1)
我不会在主视图中使用drawRect,而是为每个对象创建一个新的子视图。这些子视图可以是UIImageViews,也可以是标准的UIViews,然后通过子类化子视图的drawRect继续绘制。
然后,使用UIView的动画方法设置这些子视图的动画是微不足道的:
[UIView animateWithDuration:0.3
animations:^(void) {
// Do something to the view...
}];
显然,您需要添加代码来管理触摸并在需要时删除子视图,但这不应该太繁琐。