将UIButton上标题右侧的图像与imageEdgeInsets和titleEdgeInsets

时间:2016-05-04 07:17:37

标签: ios iphone swift uibutton

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

|Button  [image]|
|title          |

我可以通过此代码实现此目的

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

但是当标题很大时,标题标签和图像相互交叉。 如何打破标题标签?

2 个答案:

答案 0 :(得分:3)

试试这个,它永远不会相互交叉标题和图像。我在中心的故事板中创建了一个按钮。 @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 )

enter image description here

如果你想要按钮更改换行模式的多行标题按钮的标题

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

enter image description here

Swift 3.0

在swift 3.0中,您可以在界面构建器中轻松完成。

选择UIButton - >属性检查器 - >转到大小检查器并修改图像或标题插入。如果你想要按钮右侧的图像,只需在语义视图实用程序中选择强制Right-to-left

enter image description here

答案 1 :(得分:0)

此扩展程序对我有用:

扩展名:

extension UIButton {
  func imageToRight() {
      transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
      titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
      imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
  }
}

用法:

button.imageToRight()

enter image description here