我很累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()
}
}
我对UIButton子类做了同样的操作,并且可以工作,但是它没有在IB中显示图像,因此使开发人员感到困惑。
最后要解决的问题是如何添加事件?
答案 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
}