我怎样才能复制Mail.app的垃圾animation

在我的iPhone应用程序中,我在UIToolBar中放入了一个UIBarButtonSystemItemTrashtypes的UIBarBUtton。 当按下时,我想复制Mail.app的animation:bin打开,UIView折叠并飞入它。
有没有办法通过iPhone SDK访问这个animation?

目前我正在使用一个定制的animation,但有一些限制; 例如,我无法为垃圾桶本身制作animation。 你有什么build议吗? 代码示例?

干杯,
达维德

在animation上使用suckEffecttypes。 另外:spewEffect,genieEffect,unGenieEffect,twist,tubey,漩涡,cameraIris,cameraIrisHollowClose,cameraIrisHollowOpen,rippleEffect,charminUltra,zoomyIn和zoomyOut。 在模拟器中不起作用。

CATransition *animation = [CATransition animation]; animation.type = @"suckEffect"; animation.duration = 2.0f; animation.timingFunction = UIViewAnimationCurveEaseInOut; view.opacity = 1.0f; [view.layer addAnimation:animation forKey:@"transitionViewAnimation"]; 

注意:代码片段是从更大的代码库中提取的。 我希望它的作品:)

只是添加一些信息:

  1. 你可以用标准的+[UIView setAnimationTransition:forView:cache:]来使用“suckEffect”。 只需将数字103传递给animationTransitionvariables。 这不会避免你的应用程序被苹果拒绝:p
  2. iPhoneOS 3.x上不再存在“spewEffect”,“genieEffect”,“unGenieEffect”等。 剩下的唯一没有logging的过渡是“立方体”( – ),“rippleEffect”(110),三个“cameraIris”效果(105,106,107)和“suckEffect”(103)。

有关详细信息,请参见http://www.iphonedevwiki.net/index.php?title=UIViewAnimationState

另外,要使用私有API来设置animation效果,请执行以下操作: http ://www.iphonedevwiki.net/index.php?title=UIToolbar#Animating_the_trash_can_icon。

不幸的是,我认为这将是一个完全自定义的animation。 UIView折叠可以使用核心animation近似,也许通过添加透视到UIView底层的CATransform3D来扭曲UIView到被吸入垃圾桶的梯形。

就垃圾桶而言,你可以使用initWithCustomView创build一个UIBarButtonItem,它可以让你插入一个具有animation垃圾桶的自定义UIView。 它看起来像垃圾桶有两个元素,jar底和盖子,这是独立旋转打开和closuresjar。 为两者绘制PNG,为它们制作UIImageView,并使它们成为UIBarButtonItem自定义视图的子视图。 对于打开和closures,应用旋转变换来为子视图设置animation。

我不确定这是否是一个答案,但这里是做“精灵效应”的lib,所以它与你想要的非常相似。

 CGRect endRect = CGRectMake(30, 40, 50, 60); [view genieInTransitionWithDuration:0.7 destinationRect:endRect destinationEdge:BCRectEdgeTop completion:^{ NSLog(@"I'm done!"); }]; 

精灵IN