iOS TabBar中间凸起实践

本文介绍了如何在iOS中自定义一个继承自系统UITabBar的组件,实现TabBar中间按钮凸起的效果。通过KVC替换系统TabBar,调整内部子控件布局,并设置代理来处理中间按钮的点击事件。关键在于重写hitTest方法,确保凸起按钮超出部分也能响应点击。同时,文章提供了关键代码和排布子控件的实现细节。
摘要由CSDN通过智能技术生成

先看下效果:

在这里插入图片描述

简单的说下大致结构和思路吧

tabbar的话也是遵循主流,自定义一个继承自系统UITabbar的HQTabbar,然后用KVC和系统的进行替换中间的凸起按钮和tabbar内部的子控件不是同一类型,是一个UIButton而已,根据tabbar内部子控件的类型去调整内部子控件的位置,从而腾出一个中间位置给凸起按钮给tabbar弄一个代理,添加一个点击中间凸起按钮的代理方法,让HQTabBarController成为它的代理,实现对应代理方法即可实现按钮点击。

如果对以上步骤有不清楚的地方可以看代码或者随时咨询我哦,这篇文字主要讲的核心就是中间按钮点击:

  1. 要想监听整个发布按钮的点击,包括凸起部分点击也有反应,那么我是通过在自定义的LBTabbar内部重写- (UIView
    *)hitTest:(CGPoint)point withEvent:(UIEvent *)even方法来实现的
  2. 我们都知道,凸起按钮是自定义的LBTabbar的子控件,默认情况下子控件尺寸如果超出父控件,那么超出的部分点击是没有反应的
  3. hitTest这个方法就是专门返回一个处理响应事件最合适view的,一般情况下我们不实现这个方法,默认就是让系统帮我们去判断处理事件响应最合适的view,一旦我们想要改变一下这种情况,我们就需要通过重写这个方法
  4. 我们的需求是只要我们点击的point在凸起按钮的任何位置(无论是否超出tabbar)都可以有响应&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值