这是我的第一篇写的博客文章,废话不多说,希望以后大家相互学习,共同进步吧。毕竟本人在iOS开发的道路上属于一名青铜选手。😄。
在最近的一个项目中,项目结构属于UITabBarViewController+UINavigationController的结构。针对UITabBar样式,美工妹子设计为毛玻璃效果。如图:
1-1透过tabBar可以看到地图的效果。此时若使用系统的肯定是满足不了要求的。我先说一种我们之前做的一种方式:就是继承与系统的UITabBarController。然后将self.tabBar.hidden = yes.之后在创建一个毛玻璃的View,在View上面添加四个按钮,添加点击手势之后。根据Button的tag值设置self.selectedIndex从而实现页面的切换效果。代码如下:
1-2下图的是按钮的点击效果
1-3这样虽然满足了要求,但在之后的使用过程中带来了很多的不便。就是在页面切换的时候。需要手动显示和隐藏这个毛玻璃的view。总之这样的方法虽然满足要求,但是用起来不方便,还是pass吧。下面介绍一种新的自定义方式。就按照我的效果图为例。效果图中我认为难点就是一个毛玻璃的效果。
对于这种第一步,我们首先自定义一个 UITabBar.新建一个类继承与UITabBar.代码如下:
1-4设置一个空白的UIImage,是为了影藏系统的UITabBar。这样的话就可以添加任意一种效果,不管是毛玻璃还是其他的效果。这样自定义的方式还有一种方便就是自定想要的按钮效果,譬如微博的UITabBar的效果。如图:
1-5这种效果的的实现方式就是,自己定义一个中间的按钮,然后重写layoutSubviews方法,代码如下:
1-6创建中间按钮 1-7设置位置这样就满足微博UITabBar的效果了。上述为UITabBar自定义的方式。在自定义的UITabBarViewController的页面中这样设置即可:[self setValue:[[#自定义UITabBar# alloc] init] forKey:@"tabBar"];。
之后会在UITabBarViewController子类中这是他的ViewControllers。代码如下
1-8这样设置当然是没有错的,但是运行之后会发现有问题出现。如图:
1-8在首次运行之后,UITabBarItem的第一个不是选中状态。尽管设置了UITabBarViewController的self.selectedIndex=0也是没有效果的。解决上述的问题时,放弃self.viewcontrollers的设置方式,改成[self addChildViewController:_homeNavigation];这种设置方式即可。
网友评论