iOS 开发中默认设置 UIButton 的图片和文字是图片在左文字在右,实际开发中这种默认的样式可能不是我们想要的,那么就需要进行调整,下面就介绍一下如何调整 UIButton 的图片和文字的相对位置
基本介绍
UIButton 内部的文字和图片分别对应 titleLabel
和 imageView
两个属性,而要调整他们之间的相对位置则需要用到 titleEdgeInsets
和 imageEdgeInsets
两个属性,这两个属性默认是 UIEdgeInsetsZero
|
|
这两个属性是 UIEdgeInsets
类型,这是一个结构体类型,里面有四个参数,分别是:top
, left
, bottom
, right
,这四个参数表示距离原来位置的上边界、左边界、下边界、右边界的距离
|
|
top
为正值时,控件会相对原来所在的位置下移相应值,控件的顶部边缘会在原来位置的下方相应值,top
为负值时,控件会相对原来的位置上移相应值,控件的顶部边缘会在原来位置的上方相应值
left
为正值时,控件会相对原来所在的位置右移相应值,控件的左侧边缘会在原来位置的右方相应值,left
为负值时,控件会相对原来的位置左移相应值,控件的左侧边缘会在原来位置的左方相应值
bottom
为正值时,控件会相对原来所在的位置上移相应值,控件的底部边缘会在原来位置的上方相应值,bottom
为负值时,控件会相对原来的位置下移相应值,控件的底部边缘会在原来位置的下方相应值
right
为正值时,控件会相对原来所在的位置左移相应值,控件的右侧边缘会在原来位置的左方相应值,right
为负值时,控件会相对原来位置右移相应值,控件的右侧边缘会在原来位置的右方相应值
titleEdgeInsets 和 imageEdgeInsets 如何使用
UIButton 默认情况下的效果是居中实现
|
|
UIEdgeInsets
几个参数都是基于默认情况下的位置进行偏移的,取值可正可负,这里其实很绕的,下面我用 titleLabel
举例,用图和代码详细的描述一下这四个参数正负的区别
1、titleLabel 往左偏移 20
|
|
这里 titleEdgeInsets
的 left
设置为 -20,right
设置为 20 ,意思就是 titleLabel
调整之后左边的位置距离原先 titleLabel
左边位置 -20,右边的位置距离原先 titleLabel 右边位置 20,于是 titleLabel
就会整体往左移偏移了 20
2、titleLabel 往右偏移 20
|
|
这里 titleEdgeInsets
的 left
设置为 20 ,right
设置为 -20,意思就是 titleLabel
调整之后左边的位置距离原先 titleLabel
左边位置 20 个像素,右边的位置距离原先 titleLabel
右边位置 -20,于是 titleLabel
就会整体往右移偏移 20
3、titleLabel 往上偏移 20
|
|
这里 titleEdgeInsets
的 top
设置为 -20 ,bottom
设置为20,意思就是 titleLabel
调整之后上边的位置距离原先 titleLabel
上边位置 -20,下边位置距离原先 titleLabel 位置 20,于是 titleLabel
就会整体上移 20
4、titleLabel 往下偏移 20
|
|
这里 titleEdgeInsets
的 top
设置为 20 ,bottom
设置为 -20,意思就是 titleLabel
调整之后上边的位置距离原先 titleLabel
上边位置 20,下边的位置距离原先 titleLabel
下边位置 -20,于是 titleLabel
就会整体往下偏移了 20
同理,imageView
的 imageEdgeInsets
的偏移设置和 titleLabel
是一样的,如果设置的偏移量超出 Button
的 Frame
有可能会导致 imageView
和 titleLabel
显示在 Button
外面或者被拉伸压缩
调整 titleEdgeInsets 和 imageEdgeInsets 在 UIButton 中应用
文字在左,图片在右的 Button
|
|
文字在下,图片在上的 Button
|
|
文字在上,图片在下的 Button
|
|
以上就是我关于的调整 UIButton 文字和图片位置的简单总结,其实明白了怎么使用 titleEdgeInsets 和 imageEdgeInsets 的偏移,就可以自定义出各种摆放位置的 UIButton
了
有兴趣的还可以阅读以下文章:
本人刚开始写博客,主要是为了给自己的知识点做一个笔记,方便自己以后查阅,如果能让别人有所启发也是荣幸之至!如有错误,欢迎指正!