相关疑难解决方法(0)

什么时候在iOS中发生隐式动画?

每个人和每本书都声称CALayer中存在隐式动画.但是,每次我想验证到目前为止,我最终都会严格按照设定值进行验证.完全没有动画.

这是项目中没有其他任何事情发生的例子.我所做的就是创建一个视图,然后获取它的CALayer实例并执行一些应该隐式动画的操作.

[theLayer setValue:[NSNumber numberWithFloat:M_PI * 1.1] forKeyPath:@"transform.rotation.z"];
Run Code Online (Sandbox Code Playgroud)

另一个:

CGRect currentBounds = theLayer.bounds;
currentBounds.size.width += 120.f;
[self.animatedLayer setBounds:currentBounds];
Run Code Online (Sandbox Code Playgroud)

视图包含一些东西,所以我可以看到变化.我看到了视觉上的变化,但作为一个坚硬的瞬间.完全没有动画.

因此,在撰写关于核心动画和隐式动画的内容时,要么所有这些书都是错误的并且考虑到旧的Mac OS X知识,要么我做错了.任何人都可以提供一个演示iPhone上隐式动画的工作示例吗?

core-animation ios

22
推荐指数
1
解决办法
5176
查看次数

在Layer-Backed视图上使用核心动画

核心动画编程指南中,有一个段落How to Animate Layer-Backed Views,它说:

如果要使用Core Animation类来启动动画,则必须从基于视图的动画块中发出所有Core Animation调用.UIView类默认禁用图层动画,但在动画块内重新启用它们.因此,您在动画块之外所做的任何更改都不会生成动画.

还有一个例子:

[UIView animateWithDuration:1.0 animations:^{
   // Change the opacity implicitly.
   myView.layer.opacity = 0.0;

   // Change the position explicitly.
   CABasicAnimation* theAnim = [CABasicAnimation animationWithKeyPath:@"position"];
   theAnim.fromValue = [NSValue valueWithCGPoint:myView.layer.position];
   theAnim.toValue = [NSValue valueWithCGPoint:myNewPosition];
   theAnim.duration = 3.0;
   [myView.layer addAnimation:theAnim forKey:@"AnimateFrame"];
}];
Run Code Online (Sandbox Code Playgroud)

在我看来,它告诉我如果不从基于视图的动画块中发出核心动画调用,就不会有动画.

但似乎如果我直接添加核心动画调用而没有基于视图的动画块,它的工作方式相同.

我错过了什么吗?

animation objective-c ios

3
推荐指数
1
解决办法
3173
查看次数

标签 统计

ios ×2

animation ×1

core-animation ×1

objective-c ×1