TabBar添加中间自定义按钮

有时候APP会有标题这样的需求,看了一些demo 感觉实现的都比较复杂(当然人家写的都是很精致的),于是自己就用简单的方法实现了下基本的需求.

效果如图:


具体实现通过自定义UITabBarController和UITabBar

如下图:


在TabBarController中将系统的TabBar指向我们定义的

代码如下:

WJTabBar *bar  =[WJTabBar new];

[self setValue:bar forKey:@"tabBar"];

然后在Tabbar中申明自定义的按钮

 @property(nonatomic,weak) UIButton *customCenterButton;

实现思路是:首先判断是否有自定义的按钮 如果有的话就重新布局tabbar的UITabBarButton位置 如果没有就不改变。

通过Xcode的界面分析,可以看到TabBar下面的SubView,我们需要改变的是UITabBarButton。


剩下的就是怎么布局的问题,在layoutSubviews中重新布局,代码如下:


到这里基本上能实现需求,但是当自定义的按钮高度超过Tabbar的时候,超过的部分是无法响应点击事件的,解决方法也很简单,如下代码

//让超过tabbar高度的部分也能点击

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{

if (_customCenterButton) {

//如果点击的点位于_customCenterButton内就返回_customCenterButton

if (CGRectContainsPoint(_customCenterButton.frame, point)) {

return _customCenterButton;

}

}

return [super hitTest:point withEvent:event];

}


到这基本能满足大部分的需求了,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 11,296评论 4 26
  • 先上效果图 思路是个很重要的东西 --->第一、如何实现中间按钮的与众不同,怎样改变? --->第二、实现完界面的...
    简书admin阅读 4,290评论 0 0
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,737评论 51 604
  • 在某些项目的初期我们经常会选择使用UITabbarController或者是UINavigationControl...
    赵永洪阅读 8,301评论 2 1
  • 亲 七夕 鹊桥会 温馨浪漫 曾经的惊喜 早已永驻心间 时光已定格 一生一世 5 2 0 永远 爱 花朵 正盛开 有...
    阳光Sunflower阅读 3,089评论 0 2