以下代码完美地工作,除了两个彼此靠近的按钮。有没有办法使用此扩展我喜欢使用的按钮?或者,我可以排除不需要使用此扩展程序的按钮吗?
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
}
}
答案 0 :(得分:0)
不要让事情变得复杂,也不要直接在代码中选择数字44。您不需要扩展UIButton,因为您不需要以这种奇怪的方式处理所有UIButton行为。
我只需要制作一个更大的透明按钮(颜色清晰),然后添加一个小的UIImageView作为子视图。这是我猜的最简单的方法。