也就是图片和文字都协调的。
我结合自己项目实际修改后的源码如下:
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中的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即可。
虽然帮助不了,谢谢你的关注,分全给你了。
虽然帮助不了,谢谢你的关注,分全给你了。