如何在将图像添加到按钮时禁用UIButton的标题



我创建了一个自定义UIButton类,以在屏幕右边缘显示按钮的图像。

代码如下 -

class CutomButton: UIButton {    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }
    func setup() {
        imageView?.translatesAutoresizingMaskIntoConstraints = false
        imageView?.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -8).isActive = true
        imageView?.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
    }
}

上面的代码按预期工作。但是,按钮的标题向右移动,就像 imageView 位于其原始位置(位于标题的左侧(一样。

谁能指出如何将按钮的标题放置在其原始位置,就好像按钮的图像不存在一样?

默认情况下,UIButton类在内部管理它,但您确实有几个选择:

简易模式:修改UIButton:titleEdgeInsetsimageEdgeInsets中定义的边缘内陷。查看不同的SO帖子以获取足够相似的先前答案,但您只需要根据需要对其进行修改即可。

高级(但更灵活(模式:由于您正在创建子类,因此您可以改为子类UIControl而不是UIButton。由于 UIButton 是 UIControl 的子类,因此触摸事件仍以与UIButton相同的方式注册,您可以覆盖 isHighlighed/isSelected 以控制"自定义按钮"在触摸状态下的外观。

最新更新