我从调用 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 动画] 说从原始rect到rectGrew时,它表现不佳。相反,它的表现如图所示。
好吧,想来想去,也不是完全没有道理,因为当UIView自己水平拉伸的时候,并不知道cap不会变。那么还有其他方法可以做到这一点吗?
实际上,我对绘画、图形和动画非常陌生。我所知道的是(如果错了,请纠正我):
- 如果我想“画一些东西”,我应该重写 UIView 的 drawRect 方法,这是通过初始化 UIView 来完成的,不应该或者最好不要在外面调用。假设我通过 CGContextFillRect 在 UIView 中绘制了一个矩形.....
- 但是如果我想为这个矩形设置动画怎么办?我不能基于 Quartz2D 制作动画,而是来自 UIView 动画或 CALayer(更深的技术),所以我要做的就是将矩形本身作为单独的 UIViewRect 单独制作,所以我可以调用 [UIViewRect 动画] 方法,我正确的
- 如果是这样,我必须将每个要制作动画的矩形分别设为 UIView。不影响性能吗?或者这只是苹果喜欢做的方式?
任何建议都会很有帮助,非常感谢。