基于动画CGPoint.x在UIView中绘制一条线

基于动画CGPoint.x在UIView中绘制一条线,uiview,core-animation,Uiview,Core Animation,我试图在UIView(称为View a)中根据“View a”子视图的中心绘制一条垂直线 子视图可以很好地设置动画,但是线条绘制没有设置动画。它撞到了最后的位置 例如,如果子视图位于CGPoint(0100),并且我想设置动画到CGPoint(100100)。 子视图会按预期移动,但是,线条图形不会移动,它在整个动画中仅显示在CGPoint(100100)处 当然,在我调用的动画块内[self-setNeedsDisplay] 我使用的代码如下(pointView是上面提到的子视图): 在dra

我试图在UIView(称为View a)中根据“View a”子视图的中心绘制一条垂直线

子视图可以很好地设置动画,但是线条绘制没有设置动画。它撞到了最后的位置

例如,如果子视图位于CGPoint(0100),并且我想设置动画到CGPoint(100100)。 子视图会按预期移动,但是,线条图形不会移动,它在整个动画中仅显示在CGPoint(100100)处

当然,在我调用的动画块内[self-setNeedsDisplay]

我使用的代码如下(pointView是上面提到的子视图):

在drawRect方法中,我有以下代码:

CGPathMoveToPoint(path, NULL, CGRectGetMidX(pointView.frame), pointView.center.y-100 );    
CGPathAddLineToPoint(path, NULL, CGRectGetMidX(pointView.frame), pointView.center.y+100 );    
CGContextAddPath(context, path);
CGContextStrokePath(context);    

你知道如何强制视图根据动画块重新绘制吗?

默认情况下,动画通过存储视图的开始和最终版本,并应用一些便宜的变换从一个视图移动到另一个视图来工作。视图的中间版本不使用
drawRect:
绘制


您可以通过将选项
UIViewAnimationOptionAllowAnimatedContent
传递到
animateWithDuration:delay:options:animations:completion:
来请求调用中间步骤
drawRect:
。使用此选项时,请确保
drawRect:
速度快,因为它将经常被调用。

您的解释很清楚,但是,当我尝试将UIViewAnimationOptionAllowAnimatedContent传递给animateWithDuration时长:延迟:选项:动画:完成:我继续获得相同的效果。它不会绘制中间步骤。请在中放置一个断点,并确保按预期调用
drawRect:
。检查您的
中心
值,查看它们是否按预期进行迭代。顺便说一句,您不需要调用
setNeedsDisplay
CGPathMoveToPoint(path, NULL, CGRectGetMidX(pointView.frame), pointView.center.y-100 );    
CGPathAddLineToPoint(path, NULL, CGRectGetMidX(pointView.frame), pointView.center.y+100 );    
CGContextAddPath(context, path);
CGContextStrokePath(context);