如何像在IB中一样将事件添加到UIImageView子类

时间:2018-12-05 12:51:53

标签: ios xcode uibutton uiimageview subclass

我很累UIButton的图像太复杂,无法自定义。创建可点击的UIImageView很长。比我想创建自己的UIImage和UIButton的混合元素。这样就可以创建自定义动画,触摸区域等等。

我决定采用UIImageView并向其中添加一个手势或按钮以检测触摸。但是我需要有一个TouchUpInside或仅仅是touch事件才能轻松将其连接到IB。看一下代码,已经写了什么:

class ClickableImageView: UIImageView {
    let embeddedButton = UIButton()

    override func awakeFromNib() {
        super.awakeFromNib()
        setup()
    }

    fileprivate func setup() {
        isUserInteractionEnabled = true
        sv(embeddedButton)
        embeddedButton.fillContainer()
        embeddedButton.addTarget(self, action: #selector(didPress), for: .touchUpInside)
    }

    @objc fileprivate func didPress() {
        embeddedButton.preventRepeatedPresses()


    }
}

enter image description here

我对UIButton子类做了同样的操作,并且可以工作,但是它没有在IB中显示图像,因此使开发人员感到困惑。

最后要解决的问题是如何添加事件?

1 个答案:

答案 0 :(得分:0)

通过提供与UIButton的(顶部,左侧,底部和右侧)的距离,可以轻松调整UIButton图像的大小,如下所示。

yourButton.imageEdgeInsets = UIEdgeInsetsMake(10, 50, 10, 95)

如果您要向UIImageView添加事件,请执行以下操作,

yourImage.isUserInteractionEnabled = true
let tapImage = UITapGestureRecognizer(target: self, action: #selector(myFunction(tapGestureRecognizer:)))
yourImage.addGestureRecognizer(tapImage)

然后处理您的方法,

@objc func myFunction(tapGestureRecognizer: UITapGestureRecognizer) {
//do something here
}