我正在努力实现这样的目标:
所以我想在我的按钮标题的左侧添加一个图像。
我在文档中找到了以下段落:
button.currentImage是只读属性,我无法设置它。 谁能说出如何实施呢?
我试图这样做:
private let logoButton: UIButton = {
let button = UIButton(type: .custom)
button.setTitle("Logo", for: .normal)
button.setImage(UIImage(named:"logo"), for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(handleLogo), for: .touchUpInside)
return button
}()
但不幸的是,我在按钮内拉伸了图片而没有标题......
我错过了什么吗?或者我应该尝试使用image + lable创建自定义视图并使其可点击?感谢
答案 0 :(得分:3)
您应该正确设置按钮项的边缘插入。
您可以在此处找到IB属性:
以编程方式,您可以设置边缘插入,如下所示:
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 20, 0, 0)];
[button setImageEdgeInsets:UIEdgeInsetsMake(0, -70, 0, 0)];
UPD:
答案 1 :(得分:1)
我认为当你需要改变按钮的大小并修改像
这样的代码时图像大小@ 1x(25 * 25),@ 2x(50 * 50),@ 3x(75 * 75)像素添加资产
self.buttonNext.backgroundColor = .blue
self.buttonNext.setImage( "your image", for: .normal)
self.buttonNext.setTitle("Logo", for: .normal)
或者如果你想要按钮文本之间的空格使用图像插入属性。
答案 2 :(得分:1)
一个好的方法是创建一个具有所需尺寸的UIView
,然后在其中设置UIImage
,将其设置为AspectFit(或任何您想要的尺寸),然后再设置{{ 1}}您需要。与UILabel
相比,您可以自定义更多视图。另外,您需要在视图上连接UIButton
,如下所示:
UITapGestureRecognizer
正如我所说,我更喜欢这种方式,它有更多的空间来定制事物。
答案 3 :(得分:0)
没有头衔?
也许你的View的backgroundColor是白色的,你的UIButton textColor也是白色的,所以它看起来没有标题
试
button.backgroundColor = UIColor.blue
答案 4 :(得分:0)
答案 5 :(得分:0)
[![在此处输入图片描述][1]][1]
我喜欢创建易于居中的 UIViews。我知道它有一些额外的代码,但它确实让我得到了我想要的
let googleView = UIView()
googleView.layer.backgroundColor = UIColor.white.cgColor
googleView.frame = CGRect(x: 30, y: 100, width: view.bounds.width - 60, height: 50)
googleView.layer.cornerRadius = googleView.frame.height / 2
let googleButton = UIView()
googleButton.frame = CGRect(x: googleView.layer.cornerRadius, y: 0, width: googleView.frame.width - 2 * googleView.layer.cornerRadius, height: 50
let googleImage = UIImageView(image: UIImage(named: "googleLogo"))
googleImage.frame = CGRect(x: 0, y: 10, width: 30, height: 30)
googleButton.addSubview(googleImage)
let googleLabel = UILabel()
googleLabel.frame = CGRect(x: googleImage.frame.maxX, y: 10, width: 1000, height: 30)
googleLabel.text = " Sign up with Google"
googleLabel.font = UIFont.boldSystemFont(ofSize: 17)
googleLabel.sizeToFit()
googleLabel.center.y = googleImage.center.y
googleButton.addSubview(googleLabel)
googleButton.frame.size.width = googleLabel.frame.maxX
googleButton.center.x = googleView.frame.width / 2
googleView.addSubview(googleButton)
let googleTap = UITapGestureRecognizer(target: self, action: #selector(googleLogin))
googleView.isUserInteractionEnabled = true
googleView.addGestureRecognizer(googleTap)
view.addSubview(googleView)
[1]: https://i.stack.imgur.com/HaZyU.png