繁体   English   中英

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

[英]Aligning image on right side of title on UIButton with imageEdgeInsets and titleEdgeInsets

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

|Button  [image]|
|title          |

我可以通过这段代码实现这一点

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

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

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

在此处输入图片说明

并且如果您想要按钮的多行标题更改按钮标题的换行符模式

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

在此处输入图片说明

斯威夫特 3.0

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

选择 UIButton -> Attributes Inspector -> go to size inspector 并修改图像或标题插入。 如果您想要按钮右侧的图像,只需在语义视图实用程序中选择强制Right-to-left

在此处输入图片说明 .

这个扩展对我有用:

扩展:

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()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM