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

Avi*_*vim 3 iphone uibutton ios swift

我想在标题右侧添加一个图像,如下所示

|Button  [image]|
|title          |
Run Code Online (Sandbox Code Playgroud)

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

button.titleEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0)
button.imageEdgeInsets = UIEdgeInsetsMake(0, 135, 0, 5)
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*llo 6

这个扩展对我有用:

扩大:

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)
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

button.imageToRight()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

iOS 15 更新

如下所述:认识 UIKit 按钮系统

  1. 创建按钮配置 从 .plain()、.gray()、.tinted() 或 .filled() 中选择

    var config = UIButton.Configuration.filled()

  2. 选择图像的位置 从全部、顶部、底部、尾部、前导、无中选择

    config.imagePlacement = .trailing

  3. 将配置分配给您的按钮

    让 myButton = UIButton(配置:config,primaryAction:...)