1

UIViewController複数のサブビューを持つ があります。各サブビューはUIViewサブクラスであり、ツールバーのボタンをタップしてビューを切り替えたいと考えています。アニメーション ブロックを使用してこれを行いました。

例:

[UIView animateWithDuration:0.5 
                      delay:0.0 
                    options:UIViewAnimationOptionTransitionFlipFromRight 
                 animations:^{
                         [StoreView removeFromSuperview];
                         [self.view addSubview:HomeView]; 
                     }
                 completion:NULL];

実際にはすべてが正常に機能しています。問題は、移行がスムーズでないことです。たとえば、 にHomeViewは (デザインの一部として) 5 つのボタンが散らばっていて、1 つのビューから に切り替えるたびにHomeView、これらのボタンは隅から来て、トランジション後に再配置されます。これは見た目が美しくありません。

では、これらのボタンを所定の位置に保持するにはどうすればよいでしょうか?

4

1 に答える 1

0

複雑なサブビューでアニメーションを実行すると、経験しているように望ましくない結果が得られることがあります。奇妙に見えるだけでなく、ビュー構造の複雑さによってはコストがかかる場合があります。私が提案する 1 つの提案は、複雑なビュー自体をアニメーション化する代わりに、ビューをグラフィックス コンテキストにレンダリングし、結果のイメージを でUIImageViewアニメーション化することです。HomeViewこの効果では、 andで複雑な変換を行うことを避けStoreView、代わりにインスタンスで単純な反転を行いUIImageViewます。次のコード例を検討してください。

UIImageView *storeImage = //  pointer to the image rendered to a graphics context
UIImageView *homeImage =  //  pointer to the image rendered to a graphics context

[self.view addSubview:storeImage];
[storeView removeFromSuperview];

[UIView animateWithDuration:0.5 
                      delay:0.0 
                    options:UIViewAnimationOptionTransitionFlipFromRight 
                 animations:^{
                         [storeImage removeFromSuperview];
                         [self.view addSubview:homeImage]; 
                     }
                 completion:^(BOOL finished) {
                     [self.view addSubview:homeView];
                     [homeImage removeFromSuperview];
                 }];
于 2012-08-14T02:45:25.597 に答える