這個問題之前已經提出過,但方式稍有不同,我無法得到任何答案以我想要的方式工作,所以我很希望有很棒的核心動畫技能的人可以幫助我。如何在同時切換子視圖的同時圍繞x軸翻轉UIView
我在桌子上有一套卡。隨着用戶向上或向下滑動,一組卡片在桌子上上下移動。屏幕上可以看到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];
}
此代碼的作品,但它具有以下它似乎無法解決的問題:
- x軸上只有一半的卡是動畫。
- 翻轉後,卡的正面朝上並翻轉。
- 一旦我翻動了卡片,我無法讓動畫再次運行。換句話說,我可以根據需要多次運行動畫塊,但只有第一次會動畫。隨後我嘗試製作動畫會導致子視圖之間淡入淡出。
另外,請記住,我需要能夠與卡的表面進行交互。即它上面有按鈕。
如果有人遇到這些問題,很高興看到您的解決方案。更好的做法是在動畫上添加一個透視變換,使其具有更多的真實感。
感謝阿龍。 transitionWithView方法給了我一個解決方案的線索。話雖如此,你的確讓我更好地瞭解3D動畫。我需要投資一部好的核心動畫書。 – 2012-03-12 09:50:59