任何人都可以在切换标签时动画制作流程吗?
我目前正在做2个问题。
1:它弄乱了我的UIControl颜色。 2:首先切换标签,然后执行动画。
我希望在将视图推送到导航堆栈时实现类似效果。
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:bookingVC.view cache:YES];
[UIView commitAnimations];
[self.tabBarController setSelectedIndex:0];
现在我正在做这个,它没有任何动画效果。
NSArray *tabBarVC = [self.tabBarController viewControllers];
UINavigationController *firstTabNC = [tabBarVC objectAtIndex:0];
BookingViewController *bookingVC = (BookingViewController *)[[firstTabNC viewControllers] objectAtIndex:0];
[bookingVC setNSStringProperty:newString]; //this string will be displayed on a UITextField whenever viewDidAppear;
// So, I need some animation here when I switch tabs to make it more obvious that the UITextField is updated.
[self.tabBarController setSelectedIndex:0];
我完全无法创建自己的动画,请指导我。我很开心,想要更好地展示。 感谢。
答案 0 :(得分:1)
你有什么理由需要使用iOS4之前的动画方式吗?动画块简化了这一点:
[UIView animateWithDuration:1.0
delay:0
options:UIViewAnimationOptionTransitionCurlUp
animations:
^{
// show your desired view however you do it
}
completion:
^(BOOL finished) {
[self.tabBarController setSelectedIndex:0];
}];
编辑:抱歉,我没有接你,你正在以某种方式进行视图转换..傻。对于这种情况,还有另一种基于块的方法:
[UIView transitionWithView:bookingVC.view
duration:1.0
options:UIViewAnimationOptionsTransitionCurlUp
animations:
^{
// do view transitioning here
}
completion:
^(BOOL finished) {
[self.tabBarController setSelectedIndex:0];
}];
编辑2:好吧,所以你似乎需要一些帮助来解决所有这些问题。您应该对UITabBarControllerDelegate
协议(您的自定义类将实现的协议)中的活动选项卡进行动画更改。特别是tabBarController:didSelectViewController:
方法。
我建议您首先覆盖tabBarController:shouldSelectViewController:
方法,以确保不会意外地为从标签到相同标签的转换设置动画:
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController
{
return viewController != [tabBarController selectedViewController];
}
在didSelectViewController:
中,执行动画。我也将借此机会修改您的代码,因为如果您在此方法中执行此操作,则会自动处理标签栏控制器的selectedIndex
,以及您使用{{1}执行的任何操作可以由活动选项卡控制器和新(选定)控制器之间的直接转换替换:
bookingVC.view
请注意,我使用- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
[UIView transitionFromView:[tabBarController selectedViewController].view
toView:viewController.view
duration:1.0
options:UIViewAnimationOptionsTransitionCurlUp |
UIViewAnimationOptionsShowHideTransitionViews
completion:nil];
}
作为动画选项的一部分。我这样做是因为我们的动画已经在系统的顶部已经更改了活动标签,所以我们不想通过尝试在系统同时从视图层中删除视图来解决它。 / p>
答案 1 :(得分:0)
尝试将动画序列放在didSelectItem:
:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
然后设置一个modalView控制器并从那里设置页面卷曲效果的动画。