将按钮图像对齐到UIButton的右边缘
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将按钮图像对齐到UIButton的右边缘相关的知识,希望对你有一定的参考价值。
关于根据标题文本对齐按钮图像有很多线索,但我找不到任何关于将图像对齐到按钮右侧的信息。
这没有效果:
button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50);
如何将图像右键对齐按钮?可以在故事板中完成吗?
它对我有用:
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)
要将图像对齐,“语义”选项似乎是最好的,“强制从右到左”。此外,我还想补充一点。您可以通过此选项保持按钮图像的形状。
通过设置,这对我有用:
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
然后对于内部图像,我将右侧插入设置为0。
button.imageEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 0);
故事板:
“属性”选项卡>确保为“图像”选择了“内容边缘”选项卡:
然后你改变'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)布局设置语义属性。
或者使用包含UIButton和UIImage的UIView,如此快照中所示。
- 在UIView中将图像右侧设置为禁用用户交互,因此用户操作/点击将传递给按钮。
- 在UIView中添加大小与UIView相同的按钮,具有透明背景颜色并覆盖图像。
- 设置按钮的内容偏移量,如此快照中所示。
这样可以根据您的要求轻松处理按钮操作,属性以及自定义图像位置和大小。试试这个。
在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的右边缘的主要内容,如果未能解决你的问题,请参考以下文章
是什么使我的WPF弹出窗口与其PlacementTarget的右边缘对齐?