将按钮图像对齐到UIButton的右边缘

sol*_*eil 23 xcode uibutton uiimage ios uiedgeinsets

关于根据标题文本对齐按钮图像有很多线索,但我找不到任何关于将图像对齐到按钮右侧的信息.

这没有效果:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50);
Run Code Online (Sandbox Code Playgroud)

如何将图像右键对齐按钮?可以在故事板中完成吗?

Gil*_*man 51

语义:视图从右到左强制为我工作 在此输入图像描述

  • UISemanticContentAttribute从iOS 9.0开始 (3认同)

sou*_*ned 17

故事板:

"属性"选项卡>确保为"图像"选择了"内容边缘"选项卡:

1

然后你改变'Left'属性不对,这就是你以编程方式做的事情.换句话说,你从左边填充它

UIEdgeInsetsMake = TOP | 左| BOTTOM | 对

以编程方式:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 100, 0, 0);
Run Code Online (Sandbox Code Playgroud)

注意:您可能还必须更改标题插入,具体取决于它对图像的引用


Sim*_*ges 16

我找到了一个棘手的方法更新UIImageViewButton 的约束

试试这个

button.imageView?.trailingAnchor.constraint(equalTo: button.trailingAnchor, constant: -8.0).isActive = true
button.imageView?.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: 0.0).isActive = true
Run Code Online (Sandbox Code Playgroud)

但不要忘记添加它以使约束有效

button.translatesAutoresizingMaskIntoConstraints = false
button.imageView?.translatesAutoresizingMaskIntoConstraints = false
Run Code Online (Sandbox Code Playgroud)


Kru*_*nal 16

有几种不同的选择.

使用 semanticContentAttribute

button.semanticContentAttribute = .forceRightToLeft
Run Code Online (Sandbox Code Playgroud)

您也可以从界面(storyboard)布局设置语义属性.

在此输入图像描述


或者 使用包含UIButton和UIImage的UIView,如此快照中所示.

  • 在UIView中将图像右侧设置为禁用用户交互,因此用户操作/点击将传递给按钮.
  • 在UIView中添加大小与UIView相同的按钮,具有透明背景颜色并覆盖图像.
  • 设置按钮的内容偏移量,如此快照中所示.

在此输入图像描述

这样可以根据您的要求轻松处理按钮操作,属性以及自定义图像位置和大小.试试这个.


Md.*_*san 13

在Swift中干净的方式来做到这一点

button.semanticContentAttribute = .forceRightToLeft
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


Dha*_*ena 12

试试下面的代码:

btn.contentHorizontalAlignment = .right
Run Code Online (Sandbox Code Playgroud)


Mus*_*tri 8

简单的方法

使用扩展在右侧设置带有自定义偏移量的图像

   extension UIButton {
    func addRightImage(image: UIImage, offset: CGFloat) {
        self.setImage(image, for: .normal)
        self.imageView?.translatesAutoresizingMaskIntoConstraints = false
        self.imageView?.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: 0.0).isActive = true
        self.imageView?.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -offset).isActive = true
    }
}
Run Code Online (Sandbox Code Playgroud)


Tha*_*eez 5

将其设为默认语义,即未指定或强制从左到右

并在button.imageEdgeInsets中将其设置为

UIEdgeInsets(顶部:0,左侧:self.view.frame.size.width-(图像大小+对齐空间),底部:0,右侧:0)

这样可以确保无论视图大小如何,都将始终从按钮右侧对齐图像