Анимированные подвиды

У меня есть контроллер разделенного представления в моем приложении для Ipad, в котором подробное представление имеет подпредставления, которые являются UITableView. Функциональность, которую я пытаюсь реализовать, состоит в том, чтобы получить представление информации в той же позиции подпредставления, когда нажата кнопка (кнопка информации) в подпредставлении. Мне нужно получить это информационное представление с помощью анимации, и эта анимация заключается в том, что при нажатии кнопки информации только это подпредставление будет переворачиваться (UIAnimationOptionFlipFromRight), и информационное представление будет отображаться...

Вот как попробуй это реализовать -

-(void) showInfoView: (id)sender
{

    infoView = [[InfoViewController alloc] initWithNibName:@"ViewViewController" bundle:nil];
    infoView.view.frame = CGRectMake(250, 300, 200, 200);

    [UIView transitionWithView:self.view duration:1
                       options:UIViewAnimationOptionTransitionFlipFromRight 
                    animations:^{
                        [self.view addSubview:infoView.view];
                    } 
                    completion:nil];
}

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

Было бы здорово, если бы кто-нибудь мог сказать мне, где я ошибаюсь.


person learner2010    schedule 14.06.2011    source источник


Ответы (2)


Основные этапы выполнения анимации на экране следующие:

  1. Создайте вид.
  2. Переместите его в исходное (закадровое) положение
  3. Добавить в иерархию представлений
  4. Выполните анимацию.

Похоже, вы пропускаете шаг 3 и, возможно, шаг 2.

person Moshe    schedule 14.06.2011
comment
спасибо за ответ.. но я думал, что [self.view addSubview:infoView.view] - это способ, которым я добавляю свое информационное представление.. Я ошибаюсь? - person learner2010; 15.06.2011
comment
Да, но вы кладете его не в то место. Поместите его перед вызовом анимации. - person Moshe; 15.06.2011
comment
спасибо .. Я попробовал это, но, похоже, это тоже не работает ... Я поместил [self.view addSubview:infoView.view] чуть ниже infoView.view.frame = CGRectMake(250, 300, 200, 200); - person learner2010; 15.06.2011
comment
@learner2010 - Не могли бы вы объяснить, почему этот ответ правильный? (Я не жалуюсь :D, но хочу уточнить для будущих искателей, так как комментарии создают впечатление, что я сбился с пути.) - person Moshe; 15.06.2011
comment
ну ... на самом деле вы правы, потому что именно так выполняется анимация ... поэтому я принял этот ответ ... - person learner2010; 16.06.2011

Вы пытались установить кадр подвида в кадр вашего супервизора, т.е.

 info.View.frame = self.view.frame;
person user1709076    schedule 28.12.2012