我有一个UIViewController
,它有多个子视图。每个子视图都是UIView
子类,我想通过点击工具栏按钮在视图之间切换。我是通过使用动画块来完成的:
示例:
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^{
[StoreView removeFromSuperview];
[self.view addSubview:HomeView];
}
completion:NULL];
实际上一切都很好。问题是过渡并不是很顺利。例如,HomeView
分散了五个按钮(作为设计的一部分),每当我从一个视图切换到HomeView
时,这些按钮将来自一个角落并在转换后重新排列,看起来不是很漂亮。
那么我将如何使这些按钮保持原位?
答案 0 :(得分:0)
使用复杂的子视图制作动画时,有时会遇到不良后果。不仅会出现一些奇怪的现象,而且根据视图结构的复杂性,它们有时会很昂贵。我要做的一个建议是,不是动画复杂的视图本身,你可以将视图渲染到图形上下文,并在UIImageView
中动画生成的图像,使用手法使你看起来像是动画视图层次结构。在此效果中,您可以避免在HomeView
和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];
}];