UIViewControllers Transitions Effect Как эффект открытия книги iBooks?

Я работал над приложением, которое является клоном iBooks, и последние 2 дня я пытался анимировать поток обложек книг, как в приложении iBook.

Это скриншот iBooks, моя книжная полка точно такая:

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

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

Может кто-нибудь помочь мне с этим вопросом? Я хочу выполнить точно такую ​​же анимацию. с двумя viewcontrollers.

4 ответа

У меня есть код демонстрации эффекта открытия ibook на github, вы можете увидеть iBooksOpen

Проверьте это, возможно, это поможет вам:

   coverView.layer.anchorPoint=CGPointMake(0, .5);
  coverView.center = CGPointMake(coverView.center.x - coverView.bounds.size.width/2.0f, coverView.center.y);

    NSLog(@"%f",coverView.layer.anchorPoint.y);

    [UIView animateWithDuration:.5 delay:0 options:UIViewAnimationCurveEaseIn  animations:^{
        coverView.transform = CGAffineTransformMakeTranslation(0,0);
        CATransform3D _3Dt = CATransform3DIdentity;
        _3Dt =CATransform3DMakeRotation(3.141f/2.0f,0.0f,-1.0f,0.0f);
        _3Dt.m34 = 0.001f;
        _3Dt.m14 = -0.0015f;
        coverView.layer.transform =_3Dt;
    } completion:^(BOOL finished){
        if (finished) {
            [self animateCurrentViewController];
            [self toolBarAndNavigationBarNeedToShow:YES];
        }
    }];

CoverView - это не что иное, как ваш взгляд

Условные обозначения:LibraryViewController - полка чтоли с книгамиReadingViewController - ViewController, где происходит чтение (см. последнее изображение вопроса)

Допустим, обложка UIImageView, Используя iOS 5.0+, вы можете добавить readingViewController как подпредставление LibrabryViewController, Затем одной из анимаций является масштабирование книги (чтение ViewController + UIIMageView). Я предлагаю здесь анимировать UIView, который является контейнером обоих. Второй переворачивает крышку:

UIIMageView.transform = CGAffineTransformMake(a,b,c,d,tx,ty); Я думаю, что a и d должны быть здесь -1 Подробнее о CGAffineTransform

PS Это кажется интересной проблемой. Пожалуйста, дайте мне знать, если мой предложенный метод возможен!

Я не уверен, но, может быть, вы можете попробовать UIPageViewController, это даст вам эффект книги. вот ссылка: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/UIPageViewControllerClassReference.html

Другие вопросы по тегам