1

我从调用 UIView 动画中得到了奇怪但并不令人惊讶的动画,我不知道使用 CALayer 动画是否同样有效。我想是的。

请看这张图片:我想要的是动画水平生长的水平条,我做的是:

子类化一个 UIView,称为 UIViewBar,在它的 drawRect:rect 方法中,我绘制了矩形的形状和一个右帽,它是由

CGContextMoveToPoint A
CGcontextAddLineToPoint B
CGContextAddArcToPoint D
CGContextAddLineToPoint C
//then close the path and fill the context

然后我在我的 UIViewController 中调用这个 UIViewBar (initWithFrame:rect),形状就是我想要的,看起来不错。但是当我执行 [UIView 动画] 说从原始rectrectGrew时,它表现不佳。相反,它的表现如图所示。

好吧,想来想去,也不是完全没有道理,因为当UIView自己水平拉伸的时候,并不知道cap不会变。那么还有其他方法可以做到这一点吗?

在此处输入图像描述

实际上,我对绘画、图形和动画非常陌生。我所知道的是(如果错了,请纠正我):

  1. 如果我想“画一些东西”,我应该重写 UIView 的 drawRect 方法,这是通过初始化 UIView 来完成的,不应该或者最好不要在外面调用。假设我通过 CGContextFillRect 在 UIView 中绘制了一个矩形.....
  2. 但是如果我想为这个矩形设置动画怎么办?我不能基于 Quartz2D 制作动画,而是来自 UIView 动画或 CALayer(更深的技术),所以我要做的就是将矩形本身作为单独的 UIViewRect 单独制作,所以我可以调用 [UIViewRect 动画] 方法,我正确的
  3. 如果是这样,我必须将每个要制作动画的矩形分别设为 UIView。不影响性能吗?或者这只是苹果喜欢做的方式?

任何建议都会很有帮助,非常感谢。

4

1 回答 1

0

哇,这是第一次完全没有答案!回答我的问题:它需要考虑 CALayer 的动画自定义属性。自定义属性是 AB 宽度(没有上限宽度的宽度,应该可以)。如果有人想要详细的代码。请在 CALayer 中谷歌自定义属性动画。

于 2013-05-30T00:54:08.430 回答