UIView transitionFromView изменить высоту просмотра

Я использую этот код для переключения между 2 UIView:

UIViewAnimationOptions animationType = UIViewAnimationOptionTransitionFlipFromLeft;

[UIView transitionFromView:self.playlistTableView toView:self.playerView duration:0.5 options:animationType completion:^(BOOL finished){
     [self.containerView sendSubviewToBack:self.upperView];
     [self.containerView sendSubviewToBack:self.playerView];

     self.isPlaylistVisible = !self.isPlaylistVisible;
     isControlsHidden = NO;
}];

И я заметил странное поведение, что, когда я сделал флип, высота self.playerView потеря 20px и через одну секунду он снова увеличивается до нормального размера кадра.

Я пытаюсь изменить animationType в UIViewAnimationOptionLayoutSubviews и теперь, когда я переключаюсь между представлениями, это поведение не происходит. Есть идеи, в чем может быть проблема?

1 ответ

Пожалуйста, попробуйте этот код.

        [self.upperView setHidden:YES];
        [self.playerView setHidden:NO];
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:1.0];
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:containerView cache:YES];
        [UIView setAnimationDuration:1.0];
        [UIView commitAnimations];
        [containerView addSubview:self.playerView];

Для получения обратного случая

    [self.upperView setHidden:NO];
    [self.playerView setHidden:YES];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:containerView cache:YES];
    [UIView setAnimationDuration:1.0];
    [UIView commitAnimations];
    [containerView addSubview:self.upperView];
Другие вопросы по тегам