我试图在基于“视图A”子视图中心的UIView中绘制垂直线(称为视图A)。在基于动画CGPoint的UIView中绘制一条线。
子视图动画效果不错,但是,线条画不是动画效果。它碰到了最后的位置。
例如,如果subview在CGPoint(0,100),我想动画到CGPoint(100,100)。 子视图按预期方式移动,但是,线条绘制不会仅在整个动画中出现在CGPoint(100,100)处。
当然动画块内部我打电话[自setNeedsDisplay]
我使用如下所述的代码(pointView是上面提到的子视图):在drawRect方法
CGPointView newCetner = CGPointMake(100,100);
[UIView animateWithDuration:.5 animations:^{
pointView.center = newCenter;
[self 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);
任何想法如何强制视图根据动画块重绘?
你的解释很清楚,但是当我尝试将UIViewAnimationOptionAllowAnimatedContent传递给animateWithDuration时:delay:options:animations:completion:我继续获得相同的效果。它没有绘制中间步骤。 – user336994
放入一个断点并确保正在按照预期调用'drawRect:'。检查你的“frame”和“center”值,看看它们是否按预期迭代。顺便说一句,你不应该需要调用'setNeedsDisplay'。 –