【问题标题】:Core Animation and drawRect:核心动画和drawRect:
【发布时间】:2010-10-12 06:42:36
【问题描述】:

我有一个使用drawRect: 绘制的 UITableViewCell。我正在 drawRect 中绘制一个形状,并希望在使用单元格进入编辑模式时为这个形状设置动画(使用一些参数)。

但是,我找不到如何在 drawRect 中使用动画参数。有人可以指出我正确的文档还是不可能?

谢谢!

【问题讨论】:

    标签: iphone uitableview core-animation core-graphics


    【解决方案1】:

    研究使用CAShapeLayer 制作形状,它有一个动画属性path

    CAShapeLayer* shape = [CAShapeLayer layer];
    // Changing this will implicitly animate to new path
    shape.path = [UIBezierPath bezierPathWithOvalInRect:someRect].CGPath;
    shape.fillColor = [UIColor redColor].CGColor;
    

    要对动画进行更多控制,请使用CATransaction

    【讨论】:

    • 是的,但你也可以使用 CoreAnimation [layer presentationLayer] 来获取正在绘制的图层的当前属性:]
    【解决方案2】:

    你不清楚什么样的形状和什么样的动画。如果您只需要一个基本形状,例如正方形、矩形或圆形,则可以避免覆盖 drawRect 而只使用 CALayer——将其添加到单元格的层层次结构中。对于其他形状,您可以对形状图层执行相同操作。

    您应该考虑将 drawRect 用于绘图视图内容,而不是用于动画。如果您想使用 drawRect 渲染视图,这很好,但如果您只是要移动形状,请为视图的中心或图层的位置设置动画。

    如果您想将 Core Animation 与 drawRect 一起使用(我建议不要这样做),您可能必须为您将在 drawRect 中使用的自定义属性设置动画,但我敢打赌您正在尝试做的事情没有drawRect可以更简单地完成。图层是您的朋友,可以在很多情况下为您提供帮助。也许详细说明您正在尝试做什么,有人可以为您提供更完整的解决方案。

    最好的问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 2017-06-21
      相关资源
      最近更新 更多