方法1:
在需要调整的按钮类中, 重写系统方法
class myButton : UIButton {
override func titleRectForContentRect(contentRect:CGRect) -> CGRect {
return CGRect
}
override func titleRectForContentRect(contentRect:CGRect) -> CGRect {
return CGRect
}
}
方法二 重写layout方法
override func layoutSubviews() {
super.layoutSubviews()
titleLabel?.frame.offsetInPlace(dx: -imageView!.frame.width * 0.5, dy: 0)
imageView?.frame.offsetInPlace(dx: titleLabel!.frame.width *0.5, dy: 0)
//之所以乘0.5是因为调用了2次
}
方法三 直接修改titleLabel 和 imageView 的x坐标
//swift和oc不一样 swift语法允许我们直接修改一个对象的结构体属性
override func layoutSubviews(){
super.layoutSubviews()
titleLabel?.frame.origin.x = 0
imageView?.frame.origin.x = titleLabel!.frame.width
}
//为了美观 文字和图片中应有些间距
//方法一
override func setTitle(title:String? , forState state: UIControlState) {
//?? 用于判断前面的参数是否为nil,如果是nil就返回??后面的数据 如果是nil就不执行
super.setTitle(title ?? "" + " ",forState: state)
}