如何设置UIButton中image与title在UIButton中居中显示
1个回答
2015-04-08 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数: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来实现居中的效果,结果发现,只要点击后,就会恢复原形(上下结构就变成左右结构了)。非常神奇的效果。不知道怎么回事儿。
但是突然一想,这几个元素,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来实现居中的效果,结果发现,只要点击后,就会恢复原形(上下结构就变成左右结构了)。非常神奇的效果。不知道怎么回事儿。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询