I understand that this animation code is outdated:
[UIView beginAnimations:@"Move" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDelay:0.08];
self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[UIView commitAnimations];
What are the modern best practices for achieving the same result?
-
\$\begingroup\$ In the future, please leave a comment on what version of iOS the code comes from and what version of iOS you're looking to upgrade to. Nearly 2 years later, this question-and-answer is purely meaningless because there's no documentation as to what iOS versions we're discussing. \$\endgroup\$nhgrif– nhgrif2014年06月17日 00:13:08 +00:00Commented Jun 17, 2014 at 0:13
-
\$\begingroup\$ The answer certainly wasn't meaningless for me at the time. The question is still open to someone providing a new answer for even more recent versions of iOS. Thanks for your contribution though, it certainly adds more meaning to this discussion.. \$\endgroup\$djskinner– djskinner2014年06月17日 11:25:01 +00:00Commented Jun 17, 2014 at 11:25
-
\$\begingroup\$ At the time, it certainly isn't meaningless, I agree. But without some sort of documentation as to what version of iOS we're talking about, it's problematic. Particularly if/when the current answer becomes irrelevant. Yes, I can return and add an updated answer, but the current answer has the green check mark, and if neither you or the current answerer returns to update that answer or its "Accept" status, that will be the first answer people try, as there's nothing to warn them "Hey, this is for iOS 6 and we're on iOS 11." \$\endgroup\$nhgrif– nhgrif2014年06月17日 11:32:23 +00:00Commented Jun 17, 2014 at 11:32
1 Answer 1
In iOS 4 and later you are encouraged to use animation blocks.
[UIView animateWithDuration: 0.5f
delay: 0.08f
options: UIViewAnimationCurveEaseIn
animations: ^{
self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}
completion: ^(BOOL finished){
// any code you want to be executed upon animation completion
}
];
One advantage of using block-based animation is that
When this code executes, the specified animations are started immediately on another thread so as to avoid blocking the current thread or your application’s main thread.
This means that the rest of your application will not be "locked up" while your animation is executing.
Explore related questions
See similar questions with these tags.