■はじめに
UIButtonに画像を設定した際に、その画像の領域以上にタップ領域を設定したい場合があります。
(画像を小さくするけど、タップはしやすいようにしたい場合など)
その際に、タップ領域を増やす方法を記載します。
■手順
以下のソースでタップ領域が増やせます。(画像名やタップ時のセレクタなどは書き換えてください。)
// 増やしたいタップ領域(マイナスの場合はボタンサイズより外側にタップ領域を増やす)
let tapMargin: CGFloat = 5
let btn = UIButton()
btn.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
btn.imageEdgeInsets = UIEdgeInsets(top: tapMargin, left: tapMargin, bottom: tapMargin, right: tapMargin)
btn.setImage(UIImage(named: "画像名"), for: .normal)
btn.addTarget(vc, action: #selector(タップ処理), for: .touchUpInside)
self.view.addSubview(btn)
上記の「tapMargin」が正の数の場合には、ボタンのサイズの内側にマージンが取られます。
そのため、上記の例だと、画像サイズはWidth:20(30 - tapMargin * 2 ※左右にマージンをとるため、*2), Height:20(30 - tapMargin * 2 ※上下にマージンをとるため、*2)となります。
ちなみに、「tapMargin」が負の数の場合には、ボタンのサイズの外側にマージンが取られます。