Подражание «нормальному» переходу вида при изменении выбранной вкладки UITabBar - PullRequest
1 голос
/ 04 августа 2010

По причинам, слишком скучным для описания, я программно изменяю панель вкладок моего приложения, чтобы перейти к другому представлению. К сожалению, это происходит мгновенно, и мы бы хотели, чтобы обычный эффект загрузки был получен, когда вы выполняете pushViewController на контроллере навигации.

Я очень неопытен в использовании анимации в objc c, я попытался использовать некоторый код, найденный здесь для моего:

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[self view] cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:2.0];
[[[self nav] tabBarController] setSelectedIndex:2];
[UIView commitAnimations];

Это делает своего рода анимацию, панель навигации загадочно появляется сверху, не совсем то, что я хотел:)

1 Ответ

0 голосов
/ 04 августа 2010

Самый простой способ заставить вашу анимацию делать то, что вы хотите, это сначала расположить ее из того места, откуда вы хотите, чтобы она пришла (предположительно, за пределами экрана), и , затем startблок [UIView ...], в котором вы устанавливаете новый кадр.Таким образом, общая схема такова:

CGRect newframe = theView.frame;
newframe.origin.x = 320.0f;
theView.frame = newframe;

[UIView beginAnimations:nil context:nil];
          // btw the context is just your context for animation delegate callbacks!
newframe.origin.x = 0.0f;
theView.frame = newframe;
[UIView commitAnimations];

Обратите внимание, что весь этот код выполняется в одно мгновение, поэтому setSelectedIndex также будет установлен немедленно: поскольку там не задействовано UIView, этоне анимированныйЧтобы запустить что-то мимо анимации, взгляните на другие вопросы.(короче: используйте animationDelegate или executeSelector: afterDelay:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...