UIView transitionFromView - PullRequest
       13

UIView transitionFromView

0 голосов
/ 09 февраля 2011

Я довольно новичок в программировании iOs.И я застрял в (я уверен) очень простой вопрос.Не знаю, что я делаю не так ...

-Мой 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];

И мой метод анимы:

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

Это меняет представлениено без перехода ...

Спасибо

1 Ответ

2 голосов
/ 22 марта 2011

Вы не можете выполнить анимацию в пределах вашего viewDidLoad - все изменения, которые вы вносите в него, выполняются до того, как представление фактически отображается, что вы и видите.показать эту анимацию, когда вид впервые отображается?Если это так, вы можете заставить его работать, включив анимацию по таймеру.Обратите внимание, что при таком подходе вам также придется немного реорганизовать ваш метод anima, чтобы получить один аргумент.

В вашем viewDidLoad:

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

Затем измените ваш метод anima на:

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