【发布时间】:2012-02-21 16:19:54
【问题描述】:
我觉得我忽略了一些基本的东西,但有什么比在互联网上出错更好的方法找到它?
我有一个相当基本的用户界面。我的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 动画块中的核心动画代码不会继承块的属性(持续时间、缓动等)。但这是否根本没有定义动画事务? (文档的含义似乎是您将获得默认动画,而我没有。)
我是否有使用明确的CAAnimation 来完成这项工作? (如果是,为什么?)
【问题讨论】:
标签: ios uiview core-animation cagradientlayer