如何通过 iPhone 中的 UIView 动画为带有右帽的水平条设置动画
Posted
技术标签:
【中文标题】如何通过 iPhone 中的 UIView 动画为带有右帽的水平条设置动画【英文标题】:How to animate horizontal bar with right cap, by UIView animation in iPhone 【发布时间】:2013-05-29 02:48:29 【问题描述】:我从调用 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。不影响性能吗?或者这只是苹果喜欢做的方式?
任何建议都会很有帮助,非常感谢。
【问题讨论】:
顺便说一句,BD这行应该不存在,我不知道如何在Illustrator中删除它.....请忽略它 【参考方案1】:哇,这是第一次完全没有答案!回答我的问题:它需要考虑 CALayer 的动画自定义属性。自定义属性是 AB 宽度(没有上限宽度的宽度,应该可以)。如果有人想要详细的代码。请在 CALayer 中谷歌自定义属性动画。
【讨论】:
以上是关于如何通过 iPhone 中的 UIView 动画为带有右帽的水平条设置动画的主要内容,如果未能解决你的问题,请参考以下文章