美文网首页
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