除了两个彼此靠近的按钮,下面的代码可以完美地工作。我喜欢使用按钮的扩展功能吗?或者,我可以排除不需要使用此扩展程序的按钮吗?

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/

10-12 04:21