rav*_*ron 6 core-animation calayer uiview ios
我目前正在阅读Apple的核心动画指南,在那里我发现以下关于iOS中的图层支持视图的段落:
如果要使用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)
这意味着必须将CALayer
s支持UIView
的隐式和显式动画放在动画块中.
但是,我发现这显然是不真实的.具体来说,我已经使用UIView
动画块之外的Core Animation类成功实现了显式动画.
我误解了这段话,或者它已经过时了,还是别的什么?
一些额外的说明:
我假设"UIView类默认禁用图层动画,但在动画块内重新启用它们"是指该+[UIView setAnimationsEnabled:]
方法.当我回到那个可以做这样一台电脑,我会检查,看看是否+[UIView areAnimationsEnabled]
回报YES
或NO
.
该引用指的是支持视图的层。对于您自己创建和管理的独立层而言,情况并非如此。
\n\niOS 上的每个视图都有一个层支持。当您更改视图的属性时,它会更改底层属性。默认情况下,该层将具有隐式动画,但该层“禁用”该行为,除非您位于 UIView 动画块内。这就是文档的该部分所指的内容。
\n\n您可以通过多种方式使用 Core\xc2\xa0Animation 来为图层属性设置动画。最常见的是,当您想要为属性设置动画时,将动画对象添加到图层中,但如果您始终希望在属性更改时设置动画,也可以通过actions
字典和字典进行自定义。styles
对于支持视图的图层,最后两个也将被禁用。
归档时间: |
|
查看次数: |
1057 次 |
最近记录: |