有关tabbar中图片展示的问题

时间:2022-08-22 09:13:46
     最近从网上下载一自定义的tabbar源码进行修改,要达到效果如下:
    有关tabbar中图片展示的问题
     也就是图片和文字都协调的。
   我结合自己项目实际修改后的源码如下:
   double _width = 320 / 5;
    double _height=49;
    for (int index = 0; index < 5; index++) {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.tag = index;
        button.frame = CGRectMake(index*_width, 0, _width, _height);
        [button addTarget:self action:@selector(changeViewController:) forControlEvents:UIControlEventTouchUpInside];
        [button setImage:[UIImage imageNamed:_pic[index]] forState:UIControlStateNormal]; //设置图片,原来的也是这样设置的
        [button setImageEdgeInsets:UIEdgeInsetsMake(-10, 0, 0, 0)];

        //添加标题
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, _height-18, _width, _height-30)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.text = _tab_titles[index];
[titleLabel setFont:[UIFont systemFontOfSize:12]];
titleLabel.textAlignment = 1;
titleLabel.textColor = [UIColor whiteColor];
[button addSubview:titleLabel];
         [_tabBarBG addSubview:button];//  _tabbarBG是在320X49的放在底部的UIImageView
   }
运行结果如下:
        有关tabbar中图片展示的问题
      运行结果跟第一图中的预期结果相差甚远,那些图片都超大,把文字也覆盖了。
      我把这些代码与修改前进行比较,发现相差无几,为何运行结果相差那么大呢?
      尝试使用以下方式 为自定义TabBar中的Button增加图片:
         UIImageView *pic=[[UIImageView alloc]initWithFrame:CGRectMake(15, 3, 30, 27)];
        pic.image=[UIImage imageNamed:_pic[index]];
       [button addSubview:pic];
       可以达到第一图预期效果,但是点击各button时,不再具有被选中时的高亮显示了。
      请教大家,如何修改上述循环中的代码,能达到第一图的效果,选中时又有高亮显示?

3 个解决方案

#1


最简单的办法就是让美工做一套连图标带文字的图就行了

#2


你那个图片超大的原因很可能是因为图片本身的尺寸就是那么大,或者你图片的文件没有加上@2x,你可以先确定一下图片的size

#3


    问题已解决,只是因为本人水平有限,其实在每个uiviewcontroller中的initXXX中设置tabbaritem的image即可。
    虽然帮助不了,谢谢你的关注,分全给你了。

#1


最简单的办法就是让美工做一套连图标带文字的图就行了

#2


你那个图片超大的原因很可能是因为图片本身的尺寸就是那么大,或者你图片的文件没有加上@2x,你可以先确定一下图片的size

#3


    问题已解决,只是因为本人水平有限,其实在每个uiviewcontroller中的initXXX中设置tabbaritem的image即可。
    虽然帮助不了,谢谢你的关注,分全给你了。