美文网首页
iOS自定义中间凸出的Tabbar.

iOS自定义中间凸出的Tabbar.

作者: 婼熙之名 | 来源:发表于2019-09-26 18:06 被阅读0次

    第一步.创建BaseTabBar 继承UITabBar

    1.添加中间按钮

    - (void)initView{

        _centerBtn = [UIButton buttonWithType:UIButtonTypeCustom];

        [_centerBtn setBackgroundColor:[UIColor whiteColor]];

        //去除选择时高亮

        _centerBtn.adjustsImageWhenHighlighted = NO;

        //  设定button大小为适应图片

        UIImage*normalImage = [UIImageimageNamed:@"tabbar_reporter"];

        [_centerBtn setImage:normalImage forState:UIControlStateNormal];

        //根据图片调整button的位置(图片中心在tabbar的中间最上部,这个时候由于按钮是有一部分超出tabbar的,所以点击无效,要进行处理)

        CGFloatwidth =55;

        CGFloatheight =47;

        CGFloatx = (kScreenWidth- width)/2.0;

        CGFloaty = -height/3.0;

        _centerBtn.frame=CGRectMake(x,y,width,height);

        _centerBtn.layer.cornerRadius= height/2.0;

        _centerBtn.layer.masksToBounds = YES;

        [self addSubview:_centerBtn];

    }

    2.处理超出区域点击无效的问题

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

        UIView*view = [superhitTest:pointwithEvent:event];

        if(view ==nil){

            /**此处if判断的原因是因为如果不判断隐藏,会影响二级页面,二级页面此位置的点击事件会被拦截**/

            if(self.hidden==YES){

                returnnil;

            }

            //转换坐标

            CGPointtempPoint = [self.centerBtnconvertPoint:pointfromView:self];

            //判断点击的点是否在按钮区域内

            if(CGRectContainsPoint(self.centerBtn.bounds, tempPoint)){

                //返回按钮

                return_centerBtn;

            }

        }

        returnview;

    }

    第二步:自定义UITabbarViewController,实现如下代码

    self.baseTabBar = [[BaseTabBar alloc]init];

    //KVC改变其值

        [self setValue:self.baseTabBar forKey:@"tabBar"];

    相关文章

      网友评论

          本文标题:iOS自定义中间凸出的Tabbar.

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