Swift - 自由调整图标按钮中的图标和文字位置(扩展UIButton)
1,Custom类型的UIButton
(2)图片与文字间的间距方式1 - 设置图片偏移量(imageEdgeInsets)
1
(3)图片与文字间的间距方式2 - 设置文字偏移量(titleEdgeInsets)
(1)我们用下面的左图(64*64)制作一个带图标的按钮
(2)图片与文字间的间距方式1 - 设置图片偏移量(imageEdgeInsets)
btn1.imageEdgeInsets =
UIEdgeInsets
(top: 0,left: -20,bottom: 0,right: 0)
|
@H_301_127@
(3)图片与文字间的间距方式2 - 设置文字偏移量(titleEdgeInsets)
1
|
btn1.titleEdgeInsets=
UIEdgeInsets
301_127@
|
2,扩展UIButton
如果我们想要把文字和图片位置调换下(即文字在前、图片在后),或者文字和图片改成上下排列,那么同样通过设置 titleEdgeInsets和 imageEdgeInsets即可实现。
为方便快速的设置图片和文字的相对位置,以及间距,这里对UIButton进行扩展。
(1)扩展代码如下:
1
(2)使用样例
11
如果我们想要把文字和图片位置调换下(即文字在前、图片在后),或者文字和图片改成上下排列,那么同样通过设置 titleEdgeInsets和 imageEdgeInsets即可实现。
为方便快速的设置图片和文字的相对位置,以及间距,这里对UIButton进行扩展。
(1)扩展代码如下:
@H_301_312@import
UIKit
extension
UIButton
{
@H_301_312@@objc
@H_301_312@func
@H_301_312@set
(image anImage:
UIImage
?,title:
String
titlePosition:
UIViewContentMode
CGFloat
UIControlState
){
self
.imageView?.contentMode = .
Center
.setImage(anImage,forState: state)
positionLabelRespectToImage(title,position: titlePosition,spacing: additionalSpacing)
.titleLabel?.contentMode = .
Center
.setTitle(title,forState: state)
}
private
@H_301_312@func
positionLabelRespectToImage(title:
String
UIViewContentMode
spacing:
CGFloat
) {
let
imageSize =
.imageRectForContentRect(
.frame)
titleFont =
.titleLabel?.font!
titleSize = title.sizeWithAttributes([
NSFontAttributeName
: titleFont!])
var
titleInsets:
UIEdgeInsets
imageInsets:
UIEdgeInsets
switch
(position){
case
.
Top
:
titleInsets =
(top: -(imageSize.height + titleSize.height + spacing),
left: -(imageSize.width),right: 0)
imageInsets =
UIEdgeInsets
Bottom
:
titleInsets =
(top: (imageSize.height + titleSize.height + spacing),
imageInsets =
Left
:
right: -(titleSize.width * 2 + spacing))
Right
:
default
:
}
.titleEdgeInsets = titleInsets
.imageEdgeInsets = imageInsets
}
}
|
@H_301_127@
(2)使用样例
class
ViewController
:
UIViewController
override
viewDidLoad() {
super
.viewDidLoad()
btn1:
=
UIButton
(frame:
CGRect
(x: 0,y: 0,width: 200,height: 32))
btn1.center =
CGPointMake
(view.frame.size.width/2,60)
view.addSubview(btn1)
view.addSubview(btn2)
btn3.setTitleColor(
//文字颜色
btn3.
"文字在上方"
)
view.addSubview(btn3)
btn4.setTitleColor(
//文字颜色
btn4.
"文字在下方"
)
view.addSubview(btn4)
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
|
@H_301_127@
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_960.html