Cher Core Animation/iOS Experts,UIView Flip animation avec animation de base
J'essaie d'obtenir un effet similaire à la question ci-dessous.
Core animation animating the layer to flip horizontally
La réponse acceptée semble décrire exactement ce que je demande, sauf qu'il n'y a pas de code avec cette réponse et je ne peux pas obtenir un code que j'écris au travail.
Voici exactement ce que je suis en train de faire:
1) Avoir 1 contrôleur vue maître/vue et sur une partie de la vue principale ont 2 UIViews qui se chevauchent, avec un seul montré (1 au « avant 'et 1 à' l'arrière ')
2) Un UIControl/UIButton séparé est enfoncé puis une transition de flip 3D survient qui fait pivoter la vue avant (visible) hors de la vue et fait pivoter en même temps la vue arrière (cachée) vers le front ... juste comme voir le revers d'une carte à jouer.
3) Pouvoir continuer à appuyer sur l'UIControl pour basculer entre les deux vues
4) Être en mesure d'interagir avec les commandes de la vue de face (c.-à-d. Appuyer sur la couche avant ne déclenchera pas involontairement un contrôle sur le dos il se trouve qu'il se trouve sous le robinet)
Je peux être approcher de ce mauvais sens alors faites le moi savoir. Idéalement, je voudrais utiliser Core Animation, et non UIView construit dans les transactions flip, car je veux que l'animation soit en 3D et que vous voulez utiliser cette tâche comme un tremplin pour faire des choses CA plus complexes. Pour le moment je peux obtenir la vue de face pour retourner joliment (une seule fois), mais la vue arrière ne montre pas.
Cheers,
Andy
Voici le code que j'ai:
MainViewController.h
@interface MainViewController : UIViewController
- (IBAction)changeViewTapped:(UITapGestureRecognizer *)recognizer;
@end
MainViewController.m
#import "MainViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface MainViewController()
@property (weak, nonatomic) IBOutlet UIView *detailView;
@property (weak, nonatomic) IBOutlet UIView *listView;
@property (nonatomic) CATransform3D rotationAndPerspectiveTransform;
@end
@implementation MainViewController
@synthesize detailView = _detailView;
@synthesize listView = _listView;
@synthesize rotationAndPerspectiveTransform = _rotationAndPerspectiveTransform;
- (void)viewDidLoad {
[super viewDidLoad];
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0/-500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, M_PI, 0.0f, 1.0f, 0.0f);
self.rotationAndPerspectiveTransform = rotationAndPerspectiveTransform;
CALayer *listLayer = self.listView.layer;
listLayer.doubleSided = NO;
listLayer.transform = self.rotationAndPerspectiveTransform;
}
- (IBAction)changeViewTapped:(UITapGestureRecognizer *)recognizer {
CALayer *detailLayer = self.detailView.layer;
CALayer *listLayer = self.listView.layer;
detailLayer.doubleSided = NO;
listLayer.doubleSided = NO;
[UIView animateWithDuration:0.5 animations:^{
detailLayer.transform = self.rotationAndPerspectiveTransform;
listLayer.transform = self.rotationAndPerspectiveTransform;
} completion:^(BOOL finished){
// code to be executed when flip is completed
}];
}
@end
Si pas être '[auto performSelector @selector (performFlip) withObject: néant afterDelay: 0,1];' l'aide performFlip pas flipTile? – DelightedD0D
Bonne prise. Fixé. – Axeva
Merci, ça marche pour moi. –