Масштабирование UIView во время transitionFromView? - PullRequest
1 голос
/ 12 апреля 2011

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

Текущий код выглядит так:

//mainView is 300x300x, smallView is 30x30      

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[UIView transitionFromView:mainView toView:smallView duration:3.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];

containerView.frame = CGRectMake(275, 415, 30, 30);

[UIView commitAnimations];  

Я не могу добиться масштабирования содержимого containerView во время анимации, фрейм просто закрывается для содержимого. Я попытался применить некоторые преобразования как к виду, так и к слоям, и ко многим другим вещам, но я не могу заставить его вести себя правильно.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2013

Попробуйте так:

[UIView transitionWithView:mainView
           duration:0.2
           options:UIViewAnimationOptionTransitionFlipFromLeft
           animations:^{ 
              containerView.frame = CGRectMake(275, 415, 30, 30)
            }
           completion:NULL];
0 голосов
/ 12 апреля 2011

Вместо настройки фрейма попробуйте вместо этого использовать преобразование:

- (void)setStartTransform:(CGAffineTransform)transform;
- (void)setEndTransform:(CGAffineTransform)transform;

Что-то вроде

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[UIView transitionFromView:mainView toView:smallView duration:3.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];

//containerView.frame = CGRectMake(275, 415, 30, 30);

[containerView setStartTransform: CGAffineTransformIdentity];
[containerView setEndTransform: CGAffineTransformMakeScale(0.1, 0.1)];

[UIView commitAnimations];  

(Возможно, вам также понадобится применить перевод к преобразованию.)

...