0

UIViewTransitionfromView の奇妙な動作を理解していないので、最初はアニメーションなしで 2 番目のビューが表示されます。コードは次のとおりです。

UIImageView *backstar=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)];
    backstar.image=[UIImage imageNamed:@"backstar.png"];

UIImageView *star=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)];
star.image=[UIImage imageNamed:@"star.png"];

UIView *containerView=[[UIView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)];
containerView.backgroundColor=[UIColor blackColor];
[self.view addSubview:containerView];
[containerView addSubview:backstar]; // if I don't do this nothing happens, container view stays f*** deep black
[containerView addSubview:star];

//if i remove the animation line, star is displayed of course, on top of backstar

[UIView transitionFromView:star toView:backstar  duration:2.0 options:UIViewAnimationOptionShowHideTransitionViews | UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished){} ];

私の間違いはどこにあるのですか?Apple doc で述べられているように、imageViews を削除するのではなく、それらを表示/非表示にすることは可能です。

どうもありがとう

4

1 に答える 1

0

このコードがどこにあるかは、あなたの投稿からは明らかではありません。すべてをviewDiLoadまたはviewWillAppearに入れるとうまくいかないことがわかりました。(viewDidLoad または viewWillAppear で) 最初のビューを取得して表示し、2 番目のビューを追加して、別のメソッド (ボタンまたは performSelector:withObject:afterDelay: で呼び出すことができます) でトランジションを実行する必要があります。また、スターからバックスターに移動する場合は、最初にスターをビューに追加し、トランジションを実行する場合にのみバックスターを追加する必要があります。これは私のために働いたものです:

@implementation TransitionTestViewController
@synthesize star,backstar;

-(void)viewDidLoad {
    self.backstar=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)];
    backstar.image=[UIImage imageNamed:@"backstar.png"];
    self.star=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 205, 205)];
    star.image=[UIImage imageNamed:@"star.png"];
    [self.view addSubview:star];
    //[self performSelector:@selector(flipViews:) withObject:nil afterDelay:.01];
}

-(IBAction)flipViews:(UIButton *) sender {
    [self.view addSubview:backstar];
    [UIView transitionFromView:self.star toView:self.backstar  duration:2.0 options: UIViewAnimationOptionShowHideTransitionViews |UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished){}];
}
于 2012-08-27T04:55:59.010 に答える