除了两个彼此靠近的按钮,下面的代码可以完美地工作。我喜欢使用按钮的扩展功能吗?或者,我可以排除不需要使用此扩展程序的按钮吗?
extension UIButton {
public override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
let buttonSize = self.frame.size
let widthToAdd = (44-buttonSize.width > 0) ? 44-buttonSize.width : 0
let heightToAdd = (44-buttonSize.height > 0) ? 44-buttonSize.height : 0
let largerFrame = CGRect(x: 0-(widthToAdd/2), y: 0-(heightToAdd/2), width: buttonSize.width+widthToAdd, height: buttonSize.height+heightToAdd)
return (CGRectContainsPoint(largerFrame, point)) ? self : nil
}
}
最佳答案
不要使事情变得复杂,也不要直接在代码中选择数字44。您不需要扩展UIButton,因为您不需要这种怪异的方式的所有UIButton行为。
我只需要制作一个更大的透明按钮(具有清晰的颜色),然后添加一个小的UIImageView作为子视图。我猜这是最简单的方法。
关于xcode - 如何在不快速更改背景图像的情况下增加UIButton的点击区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37974333/