我的情况:
我有一个UIView
的层级结构和一个CAGradientLayer
,我用它来设置这个层级结构的"背景颜色"。因此,我有以下内容:
ViewA -> ViewB -> CAGradientLayer
我的做法:
在某一时刻,我想要动画化ViewA的frame
(仅高度)。因此,代码如下:
[UIView animateWithDuration:timeInterval
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
viewA.frame = newFrame;
}];
问题:
问题在于CAGradientLayer
不会对其帧进行动画处理,它只是更改了其框架,然后视图A开始按预期进行动画处理(这可以通过将模拟器设置为慢速动画来清楚地看到)。
我尝试执行苹果公司在这里推荐的操作,在UIView
动画块内部执行操作,但实际上并没有起作用,因为我仍在此处执行框架动画处理:
viewA.frame = newFrame;
我知道我应该对CALayer的bounds进行动画处理,而不是frame。问题在于,当我对ViewA的frame进行动画处理时,如何将CALayer排除在动画之外?
我只想对其高度进行动画处理,这样我就可以同时看到viewA和CAGradientLayer进行动画处理了。