我有一种感觉,我忽略了一些基本的东西,但是有什么比在互联网上出错更好的方法来找到它?
我有一个相当基本的用户界面。my 的视图UIViewController
是一个子类,它+layerClass
是CAGradientLayer
. 根据用户的操作,我需要移动一些 UI 元素,并更改背景渐变的值。代码看起来像这样:
[UIView animateWithDuration:0.3 animations:^{
self.subview1.frame = CGRectMake(...);
self.subview2.frame = CGRectMake(...);
self.subview2.alpha = 0;
NSArray* newColors = [NSArray arrayWithObjects:
(id)firstColor.CGColor,
(id)secondColor.CGColor,
nil];
[(CAGradientLayer *)self.layer setColors:newColors];
}];
问题是我在这个块中对子视图所做的更改动画效果很好(东西移动和淡入淡出),但对渐变颜色的更改却没有。它只是交换。
现在,文档确实说动画块中的核心动画代码不会继承块的属性(持续时间、缓动等)。但这是否根本没有定义动画事务?(文档的含义似乎是您将获得默认动画,而我没有。)
我必须使用显式CAAnimation
来完成这项工作吗?(如果是这样,为什么?)