代码之家  ›  专栏  ›  技术社区  ›  RickiG

可可触控动画?

  •  2
  • RickiG  · 技术社区  · 14 年前

    我过去一直在使用UIViewAnimation制作简单的动画,现在我可以看到苹果不鼓励在+4.0中使用这个类。我开始研究卡通和动画。它提供了一些更细粒度的控制,但对于我有限的使用来说,它似乎真的很臃肿。 当我试图抓住平台上的可能性时,我跑进了一个兔子洞,里面有很多关于核心动画、Quartz和opengls的东西,但没有简单的关于动画的东西,让我开始。

    有什么好的引擎吗? 在处理过flash和Java之后,我真的很怀念它。

    如果我使用catransions,我似乎只能一次设置一个属性的动画,即alpha,如果我必须同时移动和旋转UIView,我必须为每个属性设置单独的动画。 如果我应该使用CATransition,有没有一种方法可以构建一个动画对象,同时为多个属性设置动画?

    如果有人能给我一个动画的复杂度与所需代码量成正比的方法,我会非常感激:)提前谢谢。

    2 回复  |  直到 14 年前
        1
  •  5
  •   lewiguez    14 年前

    你想得太多了。

    事实上,苹果甚至鼓励使用基于块的动画。摘自UIView类参考:

    “不鼓励使用这种方法 iOS 4.0及更高版本。你应该使用 基于块的动画方法 取而代之的是。”

    [UIView animateWithDuration:5
       animations:^{
           self.yourView.frame = CGRectMake(100, 100, 100, 200);
           self.yourView.alpha = 0.3;
       }
       completion:^(BOOL finished){
           self.yourView.alpha = 1.0;
           [self.yourProperty doSomethingReallyCool];
       }
    ];
    

    http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html .

    here . 有许多新的基于块的动画方法。

    另外,值得注意的是,block仅适用于ios4。因此,为sdk3或更低版本的设备提供了备份代码。或者,继续用beginA动画:上下文:现在,但要知道它的日子不多了。

        2
  •  0
  •   brutella    14 年前

    [UIView beginAnimations:nil context:nil]; 方法如下:

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.0f];
    
    view.alpha = 0.0f;
    view.center = CGPointMake(34.0f,23.0f);
    ...
    
    [UIView commitAnimations];