美文网首页
tabbar 自定义

tabbar 自定义

作者: 小凡凡520 | 来源:发表于2018-11-26 17:02 被阅读0次
效果
1803308-4268bfd84755c6c2.png
原理
1.使用系统tabbar 加载整个视图
2.自定义中间的button并配相应的文字
      注意:设置maskBounds属性为 false
3.设置约束并布局
4. 加载图片
5.编译运行
补充

由于button的位置超出tabbar范围导致无法响应用户的点击事件,通过hitTest可以解决这个问题

 //重写hitTest方法, 去监听发布按钮的点击, 目的是为了让凸出的部分也能响应点击事件
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    
    //这是一个判断的关键, 不判断的话push到其他页面, 点击发布按钮的位置也是会有反应的, 这样就不好了
    //self.isHidden == NO 说明当前页面是有tabbar的,那么肯定是在导航控制器的根控制器页面
    //在导航控制器根控制器页面,那么我们就需要判断手指点击的位置是否在发布按钮身上
    //是的话让发布按钮自己处理点击事件,不是的话让系统去处理点击事件就可以了
    if (self.isHidden == NO) {
        
        //将当前tabbar的触摸点转换坐标系,转换到发布按钮的身上,生成一个新的点
        CGPoint newP = [self convertPoint:point toView:self.plusBtn];
        
        //判断如果这个新的点是在发布按钮身上,那么处理点击事件最合适的view就是发布按钮
        if ( [self.plusBtn pointInside:newP withEvent:event]) {
            return self.plusBtn;
        }else{//如果点不在发布按钮身上,直接让系统处理就可以了
            
            return [super hitTest:point withEvent:event];
        }
    }
        
    else {//tabbar隐藏了,那么说明已经push到其他的页面了,这个时候还是让系统去判断最合适的view处理就好了
        return [super hitTest:point withEvent:event];
    }
    
}

相关文章

网友评论

      本文标题:tabbar 自定义

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