iOS怎么将UIButton中的图片与文字上下对齐

  介绍

这篇文章将为大家详细讲解有关iOS怎么将UIButton中的图片与文字上下对齐,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强>设置图片和文字

如示例代码:

func  initView (),→, Void  {   时间=var 按钮:UIButton  UIButton(框架:CGRectMake (100,, 200,, 100,, 100))      button.setImage(用户界面图像(命名为:“button.png"),, forState:, UIControlState.Normal)   button.setTitle(“按钮,,,forState:, UIControlState.Normal)   时间=button.backgroundColor  UIColor.blueColor ()      self.view.addSubview(按钮)   }

我们可以通过UIButton的setTitle和setImage方法分别为按钮设置图片和文字信息,但是会发现设置完成以后我们的图片和文字并没有重合排列,也没有上下排列,而是一个左右排列的样子。

 iOS怎么将UIButton中的图片与文字上下对齐”> <br/>设置图片和文字<br/> </p> <p>说到这里,肯定会有人想到设置图片和文字的框架来进行处理,而且我们也确实可以通过UIButton的对象获取到对应的imageView和titleLabel,但是如果经过测试的话,你就会发现这是一个三轮车的方法,而且是不生效的。</p> <pre类= func  initView (),→, Void  {   时间=var 按钮:UIButton  UIButton(框架:CGRectMake (100,, 200,, 100,, 100))      button.setImage(用户界面图像(命名为:“button.png"),, forState:, UIControlState.Normal)   button.setTitle(“按钮,,,forState:, UIControlState.Normal)   时间=button.backgroundColor  UIColor.blueColor ()   button.titleLabel .frame =, CGRectMake(20,, 0,, 30日,30)   时间=button.imageView ? .frame  CGRectMake(0, 0, 20日,20)      self.view.addSubview(按钮)   }

修改为这样以后,运行程序,会发现对应的视图没有任何变化。

 iOS怎么将UIButton中的图片与文字上下对齐”> <br/>添加框设置<br/> </p> <p> <强> UIEdgeInsets </强> </p> <p>查看UIButton的属性,我们会找到titleEdgeInsets和imageEdgeInsets两个属性。修改这两个属性,可以实现我们想要的效果。<br/> </p> <p> titleEdgeInsets和imageEdgeInsets都是UIEdgeInsets的对象,我们先说一下UIEdgeInsets的几个属性的具体效果。<br/> </p> <p>我们知道,UIEdgeInsets有,左,底部,对几个属性,但是通过测试,就会发现设置了顶部以后自己的y坐标并没有增加响应的距离,而是增加了1/2,那么它们到底应该如何计算呢? <br/> </p> <p>当设置了顶部以后,其实就是相当于视图的上边缘向下移动了相应的距离。用在标题中,如果titleLabel的框架(50,50,24日24);那么按钮的上下边缘应该分别是0和124,因为正常情况下titleLabel必然处于按钮的中间位置。当设置了titleEdgeInsets的最高为10以后,相当于按钮的上下坐标为10124,则titleLabel的坐标就变成了(50,55,24日24),也就是上下边缘变为55岁和79岁了,向下移动了5个点。</p> <p>经过计算可以得出,如果要将文字移动到图片的下方,需要设置titleEdgeInsets和imageEdgeInsets,且分别设置为<br/>若titleLabel为w1, h2, imageView为w2, h3,上下间距为空间<br/> </p> <pre类= titleEdgeInsets =,(时间+ h3 空间,,安康;w2,, 0, 0)   imageEdgeInsets =, (-h2 安康;空间,,w1)

如上述例子若改为:

func  initView (),→, Void  {   时间=var 按钮:UIButton  UIButton(框架:CGRectMake (100,, 200,, 100,, 100))      button.setImage(用户界面图像(命名为:“button.png"),, forState:, UIControlState.Normal)   button.setTitle(“按钮,,,forState:, UIControlState.Normal)   时间=button.backgroundColor  UIColor.blueColor ()      时间=var 图象尺寸:CGSize  button.imageView ! .frame.size   时间=var  titleSize: CGSize  button.titleLabel ! .frame.size   button.titleEdgeInsets =, UIEdgeInsets(:, 0,,左:-imageSize.width,,底部:,-imageSize.height 作用;5,右:,0)   button.imageEdgeInsets =, UIEdgeInsets (:, -titleSize.height 作用;5,左:,0,,底部:,0,,右:,-titleSize.width)   self.view.addSubview(按钮)   }

则可实现我们要求的效果:

 iOS怎么将UIButton中的图片与文字上下对齐”> <br/>设置insets <br/> </p> <p> <强>注意:</>强如果设置了按钮的框架,而且按钮的宽度不足以同时显示图片和文字的大小的话,titleLabel的大小将会获取错误。所以如果需要设置架,建议先将按钮的宽度设置为frame.size。宽* 2,等titleEdgeInsets和imageEdgeInsets全部设置完成以后再重新设置框架。<h2 class=iOS怎么将UIButton中的图片与文字上下对齐