如何通过 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 动画] 时说从原始 rectrectGrew 它表现不佳。相反,它会按照图片中的说明运行。

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

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

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

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

【问题讨论】:

顺便说一句,BD这行应该不存在,我不知道如何在Illustrator中删除它.....请忽略它 【参考方案1】:

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

【讨论】:

以上是关于如何通过 iPhone 中的 UIView 动画为带有右帽的水平条设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 中隐藏/显示带有动画的 UIView

使用Autolayout为UIView设置动画

自动布局中断 UIView 动画

没有uiview动画的iphone页面卷曲

如何创建自定义 UIView 动画

如何使用 ViewWillLayoutSubview 为 UIView 框架设置动画