我写一个Demo,貌似是可以的:
http://download.csdn.net/detail/zhangao0086/7698779
你先看看,还有问题的话贴你的代码

解决方案 »

  1.   

    我刚才把 这代码 贴到 viewdidload 里面,确实 如楼主说的那样 没 效果 但是 我又把 代码 移动到 viewdidappear 方法里面 ,动画就 正常了 我想 可能是 因为     presentViewController:vc animated:YES  ,这里presentModel 的  动画的缘故 因为  viewdidload 的执行 是  在 presentModel 动画 之前的 , 这个 presentModel  API 内部 具体怎么实现的  就 没法 再研究了
      

  2.   

    动画代码你不要直接放在viewDidLoad上面,你可以子类化一个UIButton,然后把动画代码放在drawRect里面去,就像这样:- (void)drawRect:(CGRect)rect
    {
        CGRect boundingRect = CGRectMake(-100, -100, 300, 300);
        
        CAKeyframeAnimation *orbit = [CAKeyframeAnimation animation];
        orbit.keyPath = @"position";
        orbit.path = CFAutorelease(CGPathCreateWithEllipseInRect(boundingRect, NULL));
        orbit.duration = 4;
        orbit.additive = YES;
        orbit.repeatCount = INFINITY;
        orbit.calculationMode = kCAAnimationPaced;
        orbit.rotationMode = kCAAnimationRotateAuto;
        
        [self.layer addAnimation:orbit forKey:@"orbit"];
    }这样做是肯定没问题的
      

  3.   

    viewDidLoad这个方法的调用是在把你的self.view添加到window之前,你不能(而且通常也不会)对还没有加入到屏幕中的元素进行动画,而且正在播放的动画在按下Home键的时候(window属性被去除)也会停止运行(所有的layer被调用了removeAllAnimations)。