首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransaction + UIView on iOS 3.2

CATransaction + UIView on iOS 3.2
EN

Stack Overflow用户
提问于 2012-07-03 12:03:42
回答 3查看 915关注 0票数 0

我需要在iOS 3.2上实现非常定制的动画,所以在4.0之前,我既不能使用块动画,也不能使用UIKit动画。我试着用核心动画。

这是我的密码:

代码语言:javascript
复制
[CATransaction begin];
[CATransaction setAnimationDuration: 3.0];
[CATransaction setDisableActions: YES];
someView.frame = CGRectMake(endX, 0, endWidth, height); 
// a lot of another property changes
[CATransaction commit];

不幸的是,它不能工作:视图立即改变大小/不透明度,没有任何动画。

以下是我的尝试:

  • 我将新框架设置为不查看,而是设置到它的层(someView.layer.frame =.)--更糟糕的是,视图的子视图没有调整大小。
  • 我将禁用操作选项设置为“是”和“否”。

解决方案要求:

  • 必须支持iOS 3.2 (没有块)。
  • 动画必须应用于不同的视图(因此,不同的层)。
  • 动画曲线已经够困难了,所以我不能使用预定义的动画曲线(或者,用CA语言,MediaTimingFunction)。
EN

回答 3

Stack Overflow用户

发布于 2012-07-04 02:08:43

您发布的代码显式禁用动画。这条线是罪魁祸首:

代码语言:javascript
复制
[CATransaction setDisableActions: YES];

通过调用,您的事务中所做的所有更改都将立即提交,而不需要动画。去掉这一行,变化就会活跃起来。

如果您需要一个自定义曲线,您可能需要使用CABasicAnimation,就像其他人建议的那样。实际上,CAAnimation对象只适用于单个层,因此您必须创建多个CAAnimation对象。

或者,您应该能够使用CATransaction方法setAnimationTimingFunction,并将创建的自定义计时函数传递给它。请参阅CAMediaTimingFunction类引用。特别是查看functionWithControlPoints:方法,它允许您通过为描述定时函数的bezier曲线指定控制点来创建定时函数。您只限于从0,0开始,以1,1结尾的单个三次bezier。没有对更复杂的计时函数的直接支持,尽管我已经看到了实现更复杂效果的黑客。

票数 1
EN

Stack Overflow用户

发布于 2012-07-03 12:05:51

不确定这是否是您想要的,但您可以使用UIView动画

代码语言:javascript
复制
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0];
someView.frame = CGRectMake(endX, 0, endWidth, height); 
// a lot of another property changes
[UIView commitAnimations];
票数 0
EN

Stack Overflow用户

发布于 2012-07-03 12:31:18

如果您只想拥有一个定制的计时函数,那么您可以使用一个CABasicAnimation来完成它。您可以创建一个定制的定时函数(这是一个从(0,0)到(1,1)的bezier曲线,其中有两个控制点可以指定。

如果这对您来说还不够(如果您需要超过2个控制点来执行计时功能),那么您必须使用一个CAKeyframeAnumation。然后您可以指定任意数量的值(使用values属性(数组))。

在这两种情况下,您都会为键盘“框架”创建一个动画对象,并将动画添加到视图层。请注意,显式地动画属性不会更改值,因此在动画te框架之后将返回其原始值,除非您同时动画化并更改该值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11310493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档