Roberto
Roberto

Reputation: 7

UIView transitionFromView

I'm pretty new on iOs programming. And I'm stuck at a (i'm sure) very simple issue. Don't know what i'm doing wrong...

-My viewDidLoad:

[super viewDidLoad];

CGRect frame = CGRectMake(0, 0, 768, 1024);
UIView *uno=[[[UIView alloc] initWithFrame:frame] autorelease];
UIImageView *mainView = [[[UIImageView alloc] initWithFrame:frame] autorelease];
mainView.image = [UIImage imageNamed:@"photo.jpg"];
[uno addSubview:mainView];

UIView *dos=[[[UIView alloc] initWithFrame:frame] autorelease];
UIImageView *mainViewDos = [[[UIImageView alloc] initWithFrame:frame] autorelease];
mainViewDos.image = [UIImage imageNamed:@"Default.png"];
[dos addSubview:mainViewDos];
//
[self.view addSubview:uno];
//
[self anima:uno:dos];

And my anima method:

-(void) anima:(UIView *)uno:(UIView *)dos{
    [UIView transitionFromView:uno
                        toView:dos
                      duration:2.0
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:nil];
}

It changes the view but without transition...

Thanks

Upvotes: 0

Views: 3440

Answers (1)

Christopher Pickslay
Christopher Pickslay

Reputation: 17772

You can't perform an animation within your viewDidLoad--the view changes you make in there are all executed before the view is actually displayed, which is what you're seeing.

Are you trying to show this animation when the view is first displayed? If so, you can get it to work by putting the animation on a timer. Note that with this approach, you'll also have to refactor your anima method a bit to take a single argument.

In your viewDidLoad:

NSDictionary *views = [NSDictionary dictionaryWithObjectsAndKeys:uno, @"uno", dos, @"dos", nil];
[self performSelector:@selector(anima) withObject:views afterDelay:0.1];

Then change your anima method to:

-(void) anima:(NSDictionary *)views {
  [UIView transitionFromView:[views objectForKey:@"uno"]
                      toView:[views objectForKey:@"dos"]
                    duration:2.0
                     options:UIViewAnimationOptionTransitionFlipFromLeft
                  completion:nil];
}

Upvotes: 2

Related Questions