原理非常简单,把中间tab bart item的图设为一个大图就可以了。
缺点就是超出tab bar的部分是不能点击的。
//设置tab bar 中间item的图为大图标
UIViewController* vc = [UIViewController new];
UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:vc];
[vcs addObject:nav];
nav.tabBarItem.image = [[UIImage imageNamed:@"jdstreetNew_up"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
nav.tabBarItem.selectedImage = [[UIImage imageNamed:@"jdstreetNew_up"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//隐藏tab bar顶部的分隔线。否则顶部的分隔线将压在中间大图标的上面。
{
//设置tab bar的背景图后setShadowImage才有效。
{
CGRect rect = CGRectMake(0, 0, self.view.frame.size.width, 44);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
//CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
CGContextSetFillColorWithColor(context, [[UIColor colorWithRed:247/255.0
green:247/255.0
blue:247/255.0
alpha:1] CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.tabBar setBackgroundImage:img];
}
//将tab bar顶部的分隔线设置为不可见。
[self.tabBar setShadowImage:[UIImage new]];
}
中间tabbar的icon
最后的效果: