在UIButton标题右侧的图像与imageEdgeInsets和titleEdgeInsetsalignment

我想在标题的右侧添加一个图像,就像这样

|Button [image]| |title | 

而且我可以通过这个代码来实现这一点

 button.titleEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0) button.imageEdgeInsets = UIEdgeInsetsMake(0, 135, 0, 5) 

但是当标题很大时,标题标签和图像相互交叉。 我怎样才能打破标题标签?

试试这个,它永远不会相互交叉标题和图像。 我在故事板中创build了一个button。 @IBOutlet weak var myButton: UIButton!

  let somespace: CGFloat = 10 self.myButton.setImage(UIImage(named: "cross"), forState: UIControlState.Normal) self.myButton.imageEdgeInsets = UIEdgeInsetsMake(0, self.myButton.frame.size.width - somespace , 0, 0) print(self.myButton.imageView?.frame) self.myButton.titleEdgeInsets = UIEdgeInsetsMake(0, (self.myButton.imageView?.frame.width)! + somespace, 0, 10 ) 

在这里输入图像说明

如果你想button的标题button更改换行符模式的多行标题

 self.myButton.titleLabel!.lineBreakMode = NSLineBreakMode.ByWordWrapping 

在这里输入图像说明

Swift 3.0

在swift 3.0中,你可以很容易地在界面构build器中完成。

selectUIButton – >属性检查器 – >去检查大小和修改图像或标题的插图。 如果您想在button的右侧显示图片,只需在语义视图实用程序中selectRight-to-left的强制

在这里输入图像说明