美文网首页
关于自定义UITabBarViewController的心得

关于自定义UITabBarViewController的心得

作者: Rammus | 来源:发表于2016-10-21 16:03 被阅读0次

这是我的第一篇写的博客文章,废话不多说,希望以后大家相互学习,共同进步吧。毕竟本人在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];这种设置方式即可。

相关文章

网友评论

      本文标题:关于自定义UITabBarViewController的心得

      本文链接:https://www.haomeiwen.com/subject/eyqcuttx.html