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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将按钮图像对齐到UIButton的右边缘相关的知识,希望对你有一定的参考价值。

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

这没有效果:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50);

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

答案

语义:强制从右到左的视图为我工作enter image description here

另一答案

它对我有用:

self.acceptButton.setImage(UIImage(named: image), for: UIControl.State.normal)
self.acceptButton.semanticContentAttribute = .forceRightToLeft
self.acceptButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 9, bottom: 0, right: 0)
另一答案

要将图像对齐,“语义”选项似乎是最好的,“强制从右到左”。此外,我还想补充一点。您可以通过此选项保持按钮图像的形状。 User Defined Runtime Attributes

另一答案

通过设置,这对我有用:

button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

然后对于内部图像,我将右侧插入设置为0。

button.imageEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 0);
另一答案

故事板:

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

1

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

UIEdgeInsetsMake = TOP |左| BOTTOM |对

以编程方式:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 100, 0, 0);

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

另一答案

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

试试这个

button.imageView?.trailingAnchor.constraint(equalTo: button.trailingAnchor, constant: -8.0).isActive = true
button.imageView?.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: 0.0).isActive = true

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

button.translatesAutoresizingMaskIntoConstraints = false
button.imageView?.translatesAutoresizingMaskIntoConstraints = false
另一答案

有几种不同的选择。

使用semanticContentAttribute

button.semanticContentAttribute = .forceRightToLeft

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

enter image description here

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

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

enter image description here

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

另一答案

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

button.semanticContentAttribute = .forceRightToLeft

希望这可以帮助

另一答案

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

并在button.imageEdgeInsets中将其设置为

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

这将确保无论视图大小如何,它将始终对齐按钮右侧的图像

另一答案

简单的方法

使用扩展程序在右侧设置图像并使用自定义偏移量

   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
    }
}
另一答案

试试以下代码:

btn.contentHorizontalAlignment = .right
另一答案

像这样:

btn.imageView?.translatesAutoresizingMaskIntoConstraints = false
btn.imageView?.centerYAnchor.constraint(equalTo: btn.centerYAnchor, constant: 0.0).isActive = true
btn.imageView?.trailingAnchor.constraint(equalTo: btn.trailingAnchor, constant: 0.0).isActive = true
btn.imageView?.contentMode = .right

以上是关于将按钮图像对齐到UIButton的右边缘的主要内容,如果未能解决你的问题,请参考以下文章

将 div 与图像的右边缘对齐

是什么使我的WPF弹出窗口与其PlacementTarget的右边缘对齐?

UIButton 中的按钮和图像对齐问题

关于align="absmiddle"的说明

如何在 iOS 中像 UITabBarItem 一样设计 UIButton?

可以左对齐按钮文本但右对齐背景或按钮图像?