0

私は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];
}

ビューを変更しますが、遷移はありません...

ありがとう

4

1 に答える 1

2

viewDidLoad 内でアニメーションを実行することはできません。そこで行ったビューの変更はすべて、ビューが実際に表示される前に実行されます。

ビューが最初に表示されたときにこのアニメーションを表示しようとしていますか? その場合は、アニメーションをタイマーに設定することで動作させることができます。このアプローチではanima、単一の引数を取るためにメソッドを少しリファクタリングする必要があることに注意してください。

あなたのビューでDidLoad:

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];
}
于 2011-03-21T22:47:58.997 に答える