Создайте пользовательский класс UIButton и переопределите метод точки pointInside: (CGPoint), как показано ниже. Затем установите значение этих свойств из viewController.
м приложении у меня естьUIButton
это довольно мало, поэтому я подумал об увеличении области попадания.
Я нашел расширение для этого:
fileprivate let minimumHitArea = CGSize(width: 100, height: 100)
extension UIButton {
open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
// if the button is hidden/disabled/transparent it can't be hit
if self.isHidden || !self.isUserInteractionEnabled || self.alpha < 0.01 { return nil }
// increase the hit frame to be at least as big as `minimumHitArea`
let buttonSize = self.bounds.size
let widthToAdd = max(minimumHitArea.width - buttonSize.width, 0)
let heightToAdd = max(minimumHitArea.height - buttonSize.height, 0)
let largerFrame = self.bounds.insetBy(dx: -widthToAdd / 2, dy: -heightToAdd / 2)
// perform hit test on larger frame
return (largerFrame.contains(point)) ? self : nil
}
}
но когда я использую его, каждая кнопка в моем приложении имеет большую область попадания. Я хочу увеличить его только до одногоspecialButton
- как мне это сделать?