IOS_实现TabBar切换时底部切换效果
2013-07-03 14:45
681 查看
1.首先实现代理方法
#pragma mark -- UITabBarControllerDelegate
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
UIImageView* slider = (UIImageView*)[self.tabBar viewWithTag:TAB_SLIDER_TAG];
NSUInteger selectedIndex = [self.viewControllers indexOfObjectIdenticalTo:viewController];
if (slider)
{
[self.tabBar bringSubviewToFront:slider];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
CGRect frame = slider.frame;
frame.origin.x = [self horizontalLocationFor:selectedIndex];
slider.frame = frame;
[UIView commitAnimations];
}
else
{
[self addTabBarSliderAtIndex:selectedIndex];
}
}
2.步骤1中又两个方法,需要实现下一个是水平移动、一个是更改图片
- (void)addTabBarSliderAtIndex:(NSUInteger)itemIndex
{
UIImage* sliderImage = [UIImage imageNamed:@"tab_slider"];
UIImageView* slider = [[UIImageView alloc] initWithImage:sliderImage] ;
slider.tag = TAB_SLIDER_TAG;
slider.frame = CGRectMake([self horizontalLocationFor:itemIndex]
, self.tabBar.height - sliderImage.size.height
, sliderImage.size.width
, sliderImage.size.height);
[self.tabBar addSubview:slider];
}
- (CGFloat) horizontalLocationFor:(NSUInteger)tabIndex
{
CGFloat tabItemWidth = self.tabBar.frame.size.width / self.viewControllers.count;
CGFloat halfTabItemWidth = (tabItemWidth / 2.0) - (_sliderWidth / 2.0);
return (tabIndex * tabItemWidth) + halfTabItemWidth;
}
#pragma mark -- UITabBarControllerDelegate
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
UIImageView* slider = (UIImageView*)[self.tabBar viewWithTag:TAB_SLIDER_TAG];
NSUInteger selectedIndex = [self.viewControllers indexOfObjectIdenticalTo:viewController];
if (slider)
{
[self.tabBar bringSubviewToFront:slider];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
CGRect frame = slider.frame;
frame.origin.x = [self horizontalLocationFor:selectedIndex];
slider.frame = frame;
[UIView commitAnimations];
}
else
{
[self addTabBarSliderAtIndex:selectedIndex];
}
}
2.步骤1中又两个方法,需要实现下一个是水平移动、一个是更改图片
- (void)addTabBarSliderAtIndex:(NSUInteger)itemIndex
{
UIImage* sliderImage = [UIImage imageNamed:@"tab_slider"];
UIImageView* slider = [[UIImageView alloc] initWithImage:sliderImage] ;
slider.tag = TAB_SLIDER_TAG;
slider.frame = CGRectMake([self horizontalLocationFor:itemIndex]
, self.tabBar.height - sliderImage.size.height
, sliderImage.size.width
, sliderImage.size.height);
[self.tabBar addSubview:slider];
}
- (CGFloat) horizontalLocationFor:(NSUInteger)tabIndex
{
CGFloat tabItemWidth = self.tabBar.frame.size.width / self.viewControllers.count;
CGFloat halfTabItemWidth = (tabItemWidth / 2.0) - (_sliderWidth / 2.0);
return (tabIndex * tabItemWidth) + halfTabItemWidth;
}
相关文章推荐
- 猫猫学iOS(四十三)之网易彩票底部自定义TabBar实现切换
- AJ学IOS(43)之网易彩票底部自定义TabBar实现切换
- 猫猫学iOS(四十三)之网易彩票底部自定义TabBar实现切换
- iOS(三)实现App底部TabBar的切换:二
- iOS(三)实现App底部TabBar的切换:一
- iOS开发- 实现类似于陌陌点点和探探首页切换效果类似
- iOS 第11课 标签栏实现类似qq底部的效果
- [IOS 实现TabBar在Push后的隐藏 以及 两级Tabbar的切换]
- iOS开发>学无止境 - 彩色TabBar切换动画实现
- iOS开发导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- HTML5菜单栏切换实现底部滑块滑动效果实现
- Fragment实现底部选项卡切换效果
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- iOS实现从后台切换到前台有毛玻璃效果
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- [IOS视图切换]ViewDeck类似path效果的实现
- Fragment实现底部选项卡切换效果
- IOS实现聊天界面底部菜单栏效果
- 一步一步实现iOS主题皮肤切换效果
- iOS tabbar点击动画效果实现