2011-06-13 40 views
0

我有一些代码需要在UIView动画括号内运行,但是我希望它不被动画化,所以它的任何一边的所有代码都是动画的,但事实并非如此。有没有办法做到这一点?从UIView动画块中的动画排除某些动作?

+0

这是“免除”代码UI相关吗?它是否需要在动画的特定时间运行? – 2011-06-13 16:44:20

+0

是的,它的确与用户界面相关。 – Andrew 2011-06-13 16:46:42

+0

不知道为什么这被低估,因为它似乎是一个非常合理的问题 – Sam 2011-06-13 16:58:34

回答

2

没有代码,你可以插入一个UIView动画块从动画中排除,但您可以任意复杂的动画链窝的UIView动画和完成块:

[UIView animateWithDuration:0.3f animations:^ { 
    // Animation Code. 
} completion:^(BOOL finished) { 
    // Non-animated code, executed after first animation block... 
    // Blah; 
    // [Blah blah]; 
    [UIView animateWithDuration:0.3f animations:^ { 
     // More animation code. 
    }]; 
}]; 
+0

它在不同的类中运行一个方法,我宁愿不将该方法分成3个部分,以便使其工作。 – Andrew 2011-06-13 16:52:43

+4

@Andrew,没有什么能阻止你将代码中的消息发送给其他类。也许你应该发布你的代码,以便更容易理解你的具体问题。 – 2011-06-13 16:59:22

3

这似乎成为方式:

[UIView performWithoutAnimation:^{ 
    view.frame = CGRectMake(...); 
}]; 
+1

你介意解释你的答案吗? – 2015-12-25 21:40:22

+0

如果要在动画块中对视图进行更改,但将这些更改从动画中排除,只需将要排除的更改包装到UIView.performWithoutAnimation代码块中即可。 – EarlyRiser 2015-12-26 23:49:46