如何设置UIButton中image与title在UIButton中居中显示

 我来答
huanglenzhi
2015-04-08 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517201
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
自定义一个TabBar,有四个Tab。每个tab均有一个图片与文字两部分组成,图片在上,文字在下,都相对tab左右居中,当然还需要点击。如果自己写一个View,里面放一个UIImageView、UILabel、UIButton(UIGestureRecognizer)。这都是很容易实现的。
但是突然一想,这几个元素,UIButton本来就就有,UIButton是能直接设置image与title的,那么把这两部分,移动一下位置应该就ok了。事实也是如此,但是过程却让我有点蛋疼。
设置UIButton的image与title均为设置他们的UIEdgeInsets。这点也没什么问题。但是它的UIEdgeInsets与我想的却不太一样,这个不一样如果写出来,就太麻烦了。就不写了。下面我就把正确的代码贴一下:
CGRect titleBounds = tab.titleLabel.bounds;
CGRect imgBounds = tab.imageView.bounds;

UIEdgeInsets imgInsets = UIEdgeInsetsZero;
UIEdgeInsets titleInsets = UIEdgeInsetsZero;

imgInsets.bottom = tab.frame.size.height / 2 - 4;
imgInsets.right = - titleBounds.size.width;

titleInsets.top = tab.frame.size.height / 2 - 4;
titleInsets.left = - imgBounds.size.width;

[tab setImageEdgeInsets:imgInsets];
[tab setTitleEdgeInsets:titleInsets];

注:tab就是一个UIbutton。

按以上的代码,是能实现这个效果的。

在尝试的过程中,我发现,UIButton的titlelabel与imageview都是有frame的,我视图设置他们的frame来实现居中的效果,结果发现,只要点击后,就会恢复原形(上下结构就变成左右结构了)。非常神奇的效果。不知道怎么回事儿。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式