我有一种感觉,我忽略了一些基本的东西,但是找到它比在互联网上错误的更好的方法是什么?CAGradientLayer属性不在UIView动画块内动画
我有一个相当基本的用户界面。我的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];
}];
的问题是,我在这块子视图改变动画就好了(东西移动和淡入淡出),但改变渐变的颜色没有。它只是互换。
现在,the documentation does say动画块中的Core Animation代码不会继承块的属性(持续时间,缓动等)。但是,这种情况是不是完全定义了动画交易? (文档的含义似乎是,你会得到一个默认的动画,我没有得到。)
我是否有使用明确的CAAnimation
使这项工作? (如果是这样,为什么?)
神奇的发现!从来没有猜到这一点。 – 2012-08-31 04:07:13