2012-04-28 80 views
1

以下代码非常简单。 _facebookFUIImageViewUIView动画块不做任何更改

if (animationOn == YES) { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    }]; 
    [_faceBookF setImage:[UIImage imageNamed:@"facebookFBlue.png"]]; 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:1]; 
    }]; 

    } else { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    }]; 
    [_faceBookF setImage:[UIImage imageNamed:@"facebookF.png"]]; 
     [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:1]; 
    }]; 
} 

该应用程序获取包含此代码的罚款的方法,但在整个代码块中不会更改UI。据我所知,该应用程序正在主线程上运行。

任何猜测?

UPDATE - 事实上,问题是图像没有被改变 - 有或没有动画。这两个图像在应用程序的其他部分都可以很好地访问。

+0

为什么要投票? – 2012-04-28 13:51:14

+0

也许是同样的人downvoted没有评论以及。 – 2012-04-28 13:57:19

+0

您可以确认图像视图在您的代码中此时不是零吗? – borrrden 2012-04-28 14:09:42

回答

0

感谢您的回复。我已经实现了你提到的完成块,以避免两个动画同时触发。但是,主要问题与该方法未被正确访问有关。我看不出为什么,因为facebookF变量不是零,并且方法中的if和log语句正常工作。无论如何,我已经切换到NSNotification解决方案,现在正在访问该方法的所有部分。

2

试试这个。这将在第一次完成后开始第二个动画。所以它会淡出UIImageView,然后用不同版本的图像淡入淡出。

[UIView animateWithDuration: 0.4 
        animations:^ 
    { 
     [_faceBookF setAlpha:0]; 
    } 
       completion:^(BOOL finished) 
    { 
     [_faceBookF setImage:[UIImage imageNamed:@"facebookFBlue.png"]]; 
     [UIView animateWithDuration:0.4 
          animations:^ 
      { 
       [_faceBookF setAlpha:1]; 
      }]; 
    }]; 
3

它看起来像你试图运行顺序动画,但你编码他们的方式,他们可能会并行运行。你需要做的是:

if (animationOn == YES) { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    } completion:^(BOOL finished) { 

     [_faceBookF setImage:[UIImage imageNamed:@"facebookFBlue.png"]]; 
     [UIView animateWithDuration:0.4 animations:^{ 
      [_faceBookF setAlpha:1]; 
     }]; 
    }]; 



} 
else { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    }completion:^(BOOL finished) { 

    [_faceBookF setImage:[UIImage imageNamed:@"facebookF.png"]]; 
     [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:1]; 
    }]; 
}]; 
} 
+1

感谢您的快速响应。实际上我发现问题的根源在于图像没有被改变。要更改/来自的图像位于项目层次结构内并链接到目标。为什么会这样呢? – 2012-04-28 13:13:12

+0

Interface Builder中的目标可能不是您所期望的。确保笔尖连接到正确的UIViewController – 2012-04-28 13:56:12

+0

嗯,我正在使用故事板,看起来很好。此外,我遇到的相同图像在应用程序的其他地方也可以访问,这使我认为这是一个内存问题。 – 2012-04-28 13:57:30