UIView transitionFromView を使用して、2 つのビューを切り替えています。現在、UIView サブクラスで次のことを行っています。
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img.png"]];
imgView.frame = CGRectMake(0, 0, 100, 100);
UIView *detailView = [[UIView alloc] initWithFrame:imgView.frame];
detailView.backgroundColor = [UIColor redColor];
detailView.frame = imgView.frame;
[self addSubview:imgView];
[UIView transitionFromView:imgView toView:detailView duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
completion:^(BOOL finished){
}
];
これは期待どおりに機能します。トランジションは正常に実行されます。問題は、前のコードが含まれているビューのサブビューで遷移を行う必要があることです。だから、私はコンテナにすべてを入れて、それをアニメーション化しようとします:
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img.png"]];
imgView.frame = CGRectMake(0, 0, 100, 100);
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
UIView *detailView = [[UIView alloc] initWithFrame:imgView.frame];
detailView.backgroundColor = [UIColor redColor];
detailView.frame = imgView.frame;
[container addSubview:imgView];
[self addSubview:container];
[UIView transitionFromView:imgView toView:detailView duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
completion:^(BOOL finished){
}
];
ただし、この場合、アニメーションは実行されません。代わりに、トランジションのない最終結果のみが表示されます。2つのケースの違いを理解するのを手伝ってくれる人はいますか?
同じ問題がここで説明されていますが、既存の「解決策」がこの動作を完全に説明するには不十分だと思います。 transitionFromView と transitionWithView を使用したトランジション動作