iOS UIButton 图片文字上下垂直布局 解决方案
1、实现效果:

这是一个UIButton,需要改变image和title相对位置。
2、实现原理:
利用UIEdgeInsetsMake:里面的四个参数表示距离上边界、左边界、下边界、右边界的距离,默认都为零

此时,4个边距都有一个初始值,我们设置UIEdgeInsetsMake(0,0,0,0),位置是不动的
当我们给top一个正1的位移:UIEdgeInsetsMake(1,0,0,0),此时btn内的image是向下移动了0.5。
注意:为什么是0.5,这是因为我们没有设置button的内部控件对齐方式,位移距离此时变成了一半。
比如:btn.contentHorizontalAlignment和contentVerticalAlignment

只有当我们设置了这两个属性,位移才会和设置位移值相等。
我们记住一个原则,当设置正值,就表示内边距变大,负值则表示减少内边距。
3、实现如下:
定义按钮
btnFlash = UIButton(frame: frame)
btnFlash.setImage(UIImage(named: "flash_off"), for: .normal)
btnFlash.setTitle("手电筒", for: .normal)
self.view.addSubview(btnFlash)
setButtonMiddle(btn: btnFlash)
方法调用
/// 设置按钮图片文字上下垂直居中
/// 前提:1、必须设置好按钮的图片和文字
/// 2、按钮frame能让图片和文字正常显示出来(别btn宽度太小,文字都省略号了)
///
/// - Parameter btn: <#btn description#>
func setButtonMiddle(btn:UIButton) {
if btn.imageView == nil || btn.titleLabel == nil{
return
} let imgW:CGFloat = btn.imageView!.frame.size.width
let imgH:CGFloat = btn.imageView!.frame.size.height
let lblW:CGFloat = btn.titleLabel!.frame.size.width
let lblH:CGFloat = btn.titleLabel!.frame.size.height
//设置图片和文字的间距,这里可自行调整
let margin:CGFloat = btn.imageEdgeInsets = UIEdgeInsetsMake(-lblH-margin/, , , -lblW)
btn.titleEdgeInsets = UIEdgeInsetsMake(imgH+margin/, -imgW, , ) }
总结来说,就是:
图片 向 右上角 移动
文字 向 左下角 移动
PS:如果图片文字左右平移,参考这个
iOS UIButton 图片文字左右互移 位置对调 解决方案
iOS UIButton 图片文字上下垂直布局 解决方案的更多相关文章
- iOS UIButton 图片文字左右互移 位置对调 解决方案
实现类似效果: 代码实现: btnGrade.titleEdgeInsets = UIEdgeInsetsMake(, -(btnGrade.imageView?.bounds.width)!, , ...
- UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)
在开发中经常会碰到需要对按钮中的图片文字位置做调整的需求.第一种方式是通过设置按钮中图片文字的偏移量.通过方法setTitleEdgeInsets和setImageEdgeInsets实现 代码如下: ...
- iOS·UIButton如何文字在下图片在上
创建子类继承自UIButton,在layoutSubviews方法中改变文字和图片的位置就可以了,同理,稍作改变,可以写出文字在上图片在下.本文只给出文字在下图片在上的代码 -(void)layout ...
- UIButton 图片文字位置
在实际开发过程中经常在按钮上添加文字和图片,位置和图片的位置根据需求放置也是不一样的.下面实现了各种显示方式,如下图: UIButton+LSAdditions.h // // UIButton+LS ...
- UIButton图片文字位置的四种情况
我们在做项目的过程中经常会遇到各定制UIButton 1.左边图片,右边文字 2.左边文字,右边图片 3.上边图片,下边文字 4.上边文字,下边图片 针对这四种情况 使用UIButton的catego ...
- iOS - UIButton设置文字标题下划线以及下划线颜色
创建button设置可以折行显示 - (void)viewDidLoad { [super viewDidLoad]; UIButton * button = [[UIButton alloc] in ...
- day08—css布局解决方案之多列布局
转行学开发,代码100天——2018-03-24 本文将记录CSS布局之垂直布局解决方案. 常见的多列布局包括以下: 1.定宽+自适应 2.两列定宽+一列自适应 3.不定宽+自适应 4.两列不定宽+一 ...
- iOS UIButton文字和图片间距随意调整
代码地址如下:http://www.demodashi.com/demo/11606.html 前记 在开发中,我们经常会遇到这么一种情况,就是一个按钮上面有图片也有文字,但是往往设计并不是我们想要的 ...
- CSS 实现:图片+文字的布局(综合)
☊[实现要求]:图片+文字+居中 √[实现]: ① img + 文字 <div class="demo2-1"> <img src="" al ...
随机推荐
- 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象
list: >>> a = [1,2,3,4]>>> a[0]1>>> a[1]2>>> a[0] = 10>>&g ...
- Codeforces Round #369 (Div. 2)---C - Coloring Trees (很妙的DP题)
题目链接 http://codeforces.com/contest/711/problem/C Description ZS the Coder and Chris the Baboon has a ...
- Discuz网站建站运营必备插件
Discuz界面功能完善,对开发者友好,拥有丰富的插件资源,能够高度定制属于自己风格的论坛服务.但是在拥有近四千个插件的Discuz应用中心,小白站长该如何挑选合适的插件来优化自己的网站呢? 楼主 ...
- PHP两个数组相加
在PHP中,当两个数组相加时,会把第二个数组的取值添加到第一个数组上,同时覆盖掉下标相同的值: <?php $a = array("a" => "apple& ...
- InfluxDB学习之InfluxDB的基本操作
InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手.本文就为大家介绍一下InfluxDB的基本操作. InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手. 本文 ...
- Python私有变量
# 访问限制的保护,代码更加健壮 class Student(object): def __init__(self,name,score): self.__name= name self.__scor ...
- Android应用开发基础之十:多媒体编程
多媒体概念 文字.图片.音频.视频 计算机图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 256色图:每个像素 ...
- 【2016年特别福利】史上最全CSS学习资料大全
css学习篇 [2016年特别福利]史上最全CSS学习资料大全
- ZOOM - 简单易用的 jQuery 照片相册插件
jQuery 最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入一些让人惊叹的图片切换效果.ZOOM 是一款全屏效果的 jQuery 图片切换展示插件,支持键盘前后按键切换,支持 ...
- 认识基本的mfc控件
几乎可以在每个windows程序中都看到按钮.复选框.文本框以及下拉列表等等,这些都是控件.而且很多常用的控件已经内置到操作系统当中了,在Visual C++中,这些常用控件已经简答到能用“拖放”这种 ...