【发布时间】:2013-07-30 13:44:09
【问题描述】:
我有什么:
我有一个UIView's 和CAGradientLayer 的层次结构,我用它来设置这个层次结构的“背景颜色”。所以我有这样的事情:
ViewA -> ViewB -> CAGradientLayer
我在做什么:
在某一时刻,我想为 ViewA 的 frame(仅它的高度)设置动画。所以它会是这样的:
[UIView animateWithDuration:timeInterval
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
viewA.frame = newFrame;
}];
问题:
问题在于CAGradientLayer 不会为其帧设置动画,它只是更改其帧,然后 viewA 开始按预期设置动画(通过将模拟器设置为慢动作动画可以清楚地看到这一点)。
我尝试了什么:
我尝试按照 Apple 推荐的 here 进行操作,方法是在 UIView 动画块内执行此操作,但实际上并没有奏效,因为我仍在此处为帧设置动画:
viewA.frame = newFrame;
我也明白我应该为边界设置动画,而不是 CALayer 的框架,问题是,我如何为边界设置动画,并且在为 ViewA 的框架设置动画时,将 CALayer 排除在外动画?
我想要什么:
我只想为它的高度变化设置动画,所以我会同时看到viewA 和CAGradientLayer 的动画。
【问题讨论】:
-
你不能将 UIImageView(带有渐变 UIImage)设置为 ViewB 的子视图而不是 CAGradientLayer 吗?它应该同时调整大小。希望它有所帮助,但这只是一个想法,因为我不知道调整大小时 CAGradientLayer 的行为。
标签: iphone ios uiview core-animation calayer