Flip View Iphone - PullRequest
       18

Flip View Iphone

15 голосов
/ 09 мая 2009

пожалуйста, рассмотрите код ниже, и скажите мне, что я делаю неправильно.

Я хочу переключаться между двумя UIViews.

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

Переворот срабатывает от кнопок на самих видах.

- (IBAction)showMoreInfo:(id)sender
{
    UIView *moreInfo = self.flipView;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];

    UIView *parent = self.view.superview;
    [self.view removeFromSuperview];

    [parent addSubview:moreInfo];

    [UIView commitAnimations];

}



- (IBAction)showLessInfo:(id)sender
{
    UIView *lessInfo = self.view;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.flipView cache:YES];

    UIView *parent = self.flipView.superview;
    [self.flipView removeFromSuperview];

    [parent addSubview:lessInfo];

    [UIView commitAnimations];

}

Ответы [ 3 ]

17 голосов
/ 09 мая 2009

Это возможно потому, что вы не используете контейнерное представление в качестве переходного. Обратитесь к документации по setAnimationTransition: forView: cache:

Если вы хотите изменить внешний вид представления во время перехода - например, переключиться с одного вида на другой - тогда используйте контейнерное представление, экземпляр UIView, следующим образом:

  1. Начать анимационный блок.
  2. Установить переход в представлении контейнера.
  3. Удалить подпредставление из представления контейнера.
  4. Добавить новое подпредставление в представление контейнера.
  5. Зафиксировать блок анимации.

Попробуйте использовать self.view.superview в представлении перехода анимации showMoreInfo:

Причина применения метода showLessInfo: в том, что вы используете представление контейнера.

12 голосов
/ 21 января 2010

Можете ли вы использовать ваше MainWindow (UIWindow) как контейнерное представление как UIWindow в качестве наследования от UIView?

Также iPhone 3.0 представил транзакцию переворота с помощью метода presentModalViewController:

CustomViewController *vc = [[CustomViewController alloc]
    initWithNibName:@"CustomViewController" bundle:nil];

vc.delegate = self;

// The magic statement. This will flip from right to left.
// present the modal view controller then when you dismissModalViewController
// it will transition flip from left to right. Simple and elegant.
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentModalViewController:vc animated:YES];

[vc release];
0 голосов
/ 08 августа 2013

После iOS 4.0 вы можете переключаться между представлениями следующим образом:

[UIView transitionFromView:sourceView toView:destinationView duration:0.35f options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) {
    NSLog(@"I just flipped!");
}];

Как уже упоминал Джейсон, это должно произойти в представлении контейнера.

...