Можно использовать несколько подходов:
Добавление отступов к содержимому кнопки:
В UIEdgeInsets contentEdgeInsets кнопки можно задать положительные значения, увеличивая тем самым видимую область, но не меняя размер самого UIButton. Это не увеличивает область нажатия, только визуальный размер контента.
Изменение размера самого UIButton:
frame:
swift
Создание пользовательского подкласса UIButton и переопределение point(inside:with:):
Этот метод определяет, находится ли точка внутри представления, и по умолчанию использует границы представления. Его переопределение позволяет расширить эту область.
swift
Этот способ является наиболее гибким и точным для увеличения только области нажатия, не влияя на визуальный размер кнопки, если это не требуется.
Использование прозрачного UIView поверх или под кнопкой:
Можно разместить более крупный прозрачный UIView и добавить к нему жест (tap gesture recognizer). Обработчик жеста будет срабатывать, а в его действии можно вызвать событие, эквивалентное нажатию кнопки.
swift
Наилучшим подходом с точки зрения чистоты и прямого решения задачи является переопределение point(inside:with:) в подклассе UIButton.