1

我有一个UIViewController有多个子视图。每个子视图都是一个UIView子类,我想通过点击工具栏按钮在视图之间切换。我通过使用动画块做到了这一点:

例子:

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

实际上一切正常。问题是过渡并不是很顺利。例如,HomeView有五个分散的按钮(作为设计的一部分),每当我从一个视图切换到 时HomeView,这些按钮会从一个角落出来并在转换后重新排列,这看起来并不漂亮。

那么我将如何让这些按钮保持原位呢?

4

1 回答 1

0

在使用复杂的子视图制作动画时,您有时会遇到不希望的结果。不仅会出现一些奇怪的东西,而且有时会根据视图结构的复杂性而代价高昂。我提出的一个建议是,您可以将视图渲染到图形上下文并在 a 中为生成的图像设置动画,而不是为复杂的视图本身设置动画UIImageView,使用花招使您看起来像是在为视图层次结构设置动画。在这种效果中,您可以避免在 和 上进行复杂的变换HomeViewStoreView而是使用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 回答