У UIView есть разрыв сверху после анимации - PullRequest
0 голосов
/ 20 июня 2011

У меня есть приложение tabbarview, в котором есть кнопка на одной из вкладок.При нажатии этой кнопки что-то произойдет, и пользователь переключится на другую вкладку.

Я сделал анимацию для этой кнопки:

UIView * fromView = self.tabBarController.selectedViewController.view;
UIView * toView = [[self.tabBarController.viewControllers objectAtIndex:0] view];
[UIView transitionFromView:fromView 
                    toView:toView 
                  duration:0.6 
                   options:(UIViewAnimationOptionTransitionCurlDown)
                completion:^(BOOL finished) {
                    if (finished) {
                        self.tabBarController.selectedIndex = 0;
                    }
                }];

, которую я получил от .Однако проблема в том, что после анимации в верхней части экрана появляется промежуток, примерно такой же, как в строке состояния.Кто-нибудь знает, что вызывает это?Этот разрыв быстро закрывается, когда заканчивается анимация (что происходит, когда мы делаем self.tabBarController.selectedIndex = 0

Sorry I had to hide some details

Кстати, проблема все еще сохраняется, если я переключаю анимацию на другое илибез анимации.

Дополнительная информация, вот детали кадра:

from frame: x:0.000000, y:0.000000, w:320.000000, h:411.000000
to frame: x:0.000000, y:0.000000, w:320.000000, h:431.000000

Ответы [ 2 ]

0 голосов
/ 20 июня 2011

Я нашел очень хакерский способ сделать это:

CGRect to = fromView.superview.frame;
to.origin.y -= 20;
fromView.superview.frame = to;

Любой, кто сможет объяснить мне, почему я должен был это сделать, и более элегантный способ сделать это, получит ответ.

0 голосов
/ 20 июня 2011

Область контроллера панели вкладок также охватывает область под строкой состояния.Таким образом, его собственное клиентское представление имеет origin.y, равное 20.

Таким образом, вам нужно правильно установить входящий фрейм представления перед вызовом перехода.

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