【问题标题】:iPhone Quartz CGContextRotateCTM AnimationiPhone Quartz CGContextRotateCTM 动画
【发布时间】:2011-03-10 14:42:58
【问题描述】:

我正在绘制一个饼图,点击时,我将它旋转到下一个饼图

CGContextRotateCTM(context, degreesToRadians(mAngle))

有没有办法为这个过渡设置动画?可以发个例子吗?

【问题讨论】:

    标签: iphone animation core-animation core-graphics quartz-graphics


    【解决方案1】:

    我认为,如果您真的想仅更改绘图代码来旋转图表,则需要创建一个计时器并在其方法中更改旋转角度,并在那里重绘视图。

    如果可能的话,我会用图表本身旋转视图,而不是在绘图代码中应用旋转——无论是使用 UIView 动画还是使用 CALayer 动画——它们都非常简单并且提供了更大的灵活性。例如

    [UIView animateWithDuration:1.0f 
                     animations:^{
                         view.transform = CGAffineTransformMakeRotation(mAngle);
                     }];
    

    将在 1 秒内使用动画在 mAngle 上旋转您的视图(该方法从 iOS4 开始可用)。此外,如果您想将视图旋转 360 度或更多,则需要使用 CALayer 动画(详情请查看this question)。

    此外,使用标准动画很可能不会让您的视图重绘,因此会更高效。

    【讨论】:

    • 所以这是一个问题,我将如何使用 CALayer 动画或 UIView 动画对其进行动画处理?
    • 其实我不想评价我的视图,甚至我的图层。当我使用 CGContextRotateCTM(context, degreeToRadians(mAngle)) 它只旋转用户坐标系时,这意味着我在该图层中有一个饼图,它只是旋转的饼图,而不是图层,甚至是视图.
    • 但是为什么不把你的图表放到一个单独的视图中呢?如果你不能这样做 - 创建一个足够频繁触发的计时器(例如,60 次/秒)并强制你的视图在其中重绘(调整 mAngle)
    • 嗯,这就是我想省略的。如果可能的话,我只想使用 UIView 动画或 Core 动画或 CALAyer 动画。
    • 然后将您的图表移动到单独的视图或图层并应用我的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多