Этот вопрос уже задавали раньше, но немного по-другому, и я не смог получить ни один из ответов, чтобы он работал так, как я хотел, поэтому я надеюсь, что кто-нибудь с отличными навыками Core Animation может мне помочь.
У меня на столе лежит набор карт. Когда пользователь проводит пальцем вверх или вниз, набор карт перемещается вверх и вниз по столу. В любой момент времени на экране видны 4 карты, но лицевой стороной показывается только вторая карта. Когда пользователь проводит пальцем по экрану, вторая карта переворачивается лицевой стороной, а следующая карта (в зависимости от направления смахивания) приземляется на свое место, показывая свою лицевую сторону.
Я настроил свой класс просмотра карты следующим образом:
@interface WLCard : UIView {
UIView *_frontView;
UIView *_backView;
BOOL flipped;
}
И я попытался перевернуть карту, используя этот фрагмент кода:
- (void) flipCard {
[self.flipTimer invalidate];
if (flipped){
return;
}
id animationsBlock = ^{
self.backView.alpha = 1.0f;
self.frontView.alpha = 0.0f;
[self bringSubviewToFront:self.frontView];
flipped = YES;
CALayer *layer = self.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / 500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, M_PI, 1.0f, 0.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
};
[UIView animateWithDuration:0.25
delay:0.0
options: UIViewAnimationCurveEaseInOut
animations:animationsBlock
completion:nil];
}
Этот код работает, но у него есть следующие проблемы, которые я не могу понять. чтобы выяснить:
Кроме того, имейте в виду, что мне нужно иметь возможность взаимодействовать с лицевой стороной карты. то есть на нем есть кнопки.
Если кто-то сталкивался с этими проблемами, было бы здорово увидеть ваши решения. Еще лучше было бы добавить преобразование перспективы к анимации, чтобы придать ей дополнительный реализм.