我正在尝试制作一个UIButton,它在按钮标题的两侧(左侧和右侧)都有一个UIImage。理想情况下,图像将固定在按钮的左侧和右侧,标题将居中,但我可以将图像放在我想的标题标签旁边。我已经能够添加一个图像,它出现在标题之前,但是我如何添加第二个?
答案 0 :(得分:8)
我知道这是一个老问题,但由于没有提供任何代码而且有人要求它,我想我会分享我的解决方案。
我所做的是创建一个新类,它是UIButton的子类。我确保您可以在界面构建器中立即看到您所做的所有更改。所以你可以直接拖入UIButton。指定您自己的类的类,它将允许您设置图像并立即看到它被绘制
以下是我为实现这一目标所做的工作
import UIKit
@IBDesignable
class AddProfilePictureView: UIButton {
@IBInspectable var leftHandImage: UIImage? {
didSet {
leftHandImage = leftHandImage?.withRenderingMode(.alwaysOriginal)
setupImages()
}
}
@IBInspectable var rightHandImage: UIImage? {
didSet {
rightHandImage = rightHandImage?.withRenderingMode(.alwaysTemplate)
setupImages()
}
}
func setupImages() {
if let leftImage = leftHandImage {
self.setImage(leftImage, for: .normal)
self.imageView?.contentMode = .scaleAspectFill
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: self.frame.width - (self.imageView?.frame.width)!)
}
if let rightImage = rightHandImage {
let rightImageView = UIImageView(image: rightImage)
rightImageView.tintColor = COLOR_BLUE
let height = self.frame.height * 0.2
let width = height
let xPos = self.frame.width - width
let yPos = (self.frame.height - height) / 2
rightImageView.frame = CGRect(x: xPos, y: yPos, width: width, height: height)
self.addSubview(rightImageView)
}
}
}
答案 1 :(得分:0)
我会将它分解为集合视图中的两个按钮 - 它非常灵活,可以很好地用于这样的事情。
答案 2 :(得分:0)
UIImageView
将带有图片的addSubview
添加到按钮,setImage
添加另一个按钮,可以使用titleEdgeInsets
和imageEdgeInsets
进行调整
如果您需要代码示例 - 请告诉我。
希望它有所帮助!
答案 3 :(得分:0)
Swift 5,XCode 11.6
请在扩展程序或自定义UIButton类中使用以下代码。我在自定义类中使用了以下代码。该功能将分别设置左或右图像并对齐文本。
CSV
用法: