2010-06-06 7 views
0

J'essaie d'implémenter l'exemple de code ViewTransitions d'Apple, mais en mettant toute la logique dans mon viewController au lieu de ma classe applicationDelegate.Utiliser CATransition dans un viewController

Je reçois une erreur bizarre lorsque j'essaie de compiler.

_kCATransitionFade", referenced from: 
    _kCATransitionFade$non_lazy_ptr in ViewTransitionsAsViewControllerViewController.o 
(maybe you meant: _kCATransitionFade$non_lazy_ptr) 

Vous avez des idées?

En répondant au 1er commentaire, ceci est l'implémentation complète de mon viewController. La seule vraie différence avec le code Apple ViewTranstions est que je déplace la logique de la méthode 'applicationDidFinishLaunching' à ma méthode 'viewDidLoad'.

#import "ViewTransitionsAsViewControllerViewController.h" 
#import <QuartzCore/QuartzCore.h> 


@implementation ViewTransitionsAsViewControllerViewController 
@synthesize containerView, doTransitionButton; 
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
UIImage *image1 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image1.jpg" ofType:nil]]; 
view1 = [[UIImageView alloc] initWithImage:image1]; 
UIImage *image2 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image2.jpg" ofType:nil]]; 
view2 = [[UIImageView alloc] initWithImage:image2]; 
view2.hidden = YES; 
[containerView addSubview:view1]; 
[containerView addSubview:view2]; 
transitioning = NO; 

[super viewDidLoad]; 
} 

// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
// Return YES for supported orientations 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

-(void)dealloc 
{ 
[containerView release]; 
[view1 release]; 
[view2 release]; 
[super dealloc]; 
} 

-(void)performTransition 
{ 
// First create a CATransition object to describe the transition 
CATransition *transition = [CATransition animation]; 
transition.duration = 0.05; 
transition.timingFunction = [CAMediaTimingFunction  
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type =kCATransitionFade; 
transitioning = YES; 
transition.delegate = self; 
// Next add it to the containerView's layer. This will perform the transition based on how we change its contents. 
[containerView.layer addAnimation:transition forKey:nil]; 
// Here we hide view1, and show view2, which will cause Core Animation to animate view1 away and view2 in. 
view1.hidden = YES; 
view2.hidden = NO; 
// And so that we will continue to swap between our two images, we swap the instance variables  referencing them. 
UIImageView *tmp = view2; 
view2 = view1; 
view1 = tmp; 
} 

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
transitioning = NO; 
} 

-(IBAction) doTransition:(id)sender 
{ 
if(!transitioning) 
{ 
[self performTransition]; 
} 
} 
@end 
+0

Il vous serait utile de publier votre code, en particulier la zone dans laquelle vous configurez les transitions. –

Répondre

10

Vous devez ajouter le QuartzCore.framework à votre cible.

1) Étendre la section "Cibles" 2) Sélectionnez l'application de votre configuration 3) Cmd + I/Get Info 4) Sous la rubrique "Bibliothèques liés", appuyez sur le bouton "+" et sélectionnez QuartzCore.framework de la liste.

Vous devriez être capable de compiler maintenant.

+0

Super qui a aidé. –

Questions connexes