UIButton 의 터치 영역을 확장하는건 생각보다 자주 필요한 기능입니다.


예를 들면 디자이너가 10x10 크기의 이미지를 주고 버튼을 만들기 위한 가이드를 주면,

버튼을 만들고 좌표를 잡고 10x10 크기의 이미지를 넣게 되면 터치 영역이 10x10 밖에 안되서 사용이 거의 불가합니다.


디자이너가 투명영역 크기까지 잡아서 30x30 사이즈 안에 10x10 이미지를 넣어서 주면, 

터치 영역이 30x30이 될텐데 거기까지 고려해주는 디자이너는 찾기 어렵... 또는 개발자가 알아서 잘 해줘요 라고 하기도 하죠.


암튼 그래서 필요한 기능.


보통 개발 할 때 당연히 구글에 검색을 하면 이런 저런 방법이 많이 나오는데

제가 선택한 방법은 터치 영역을 확대 해버리는 방식입니다.


http://stackoverflow.com/questions/808503/uibutton-making-the-hit-area-larger-than-the-default-hit-area



여기 보면 중간에 - (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event 를 활용하는 겁니다.

실제 자기 자신의 크기에 마진 크기를 추가해서 터치 영역을 반환하기 때문에 더 큰 터치 영역 확장이 됩니다.



간단히 정리해보면 아래와 같은 Custom Class 를 만들어서 Storyboard 에서 지정해주기만 하면 됩니다.



ExpandTouchButton.h

#import <UIKit/UIKit.h>


@interface ExpandTouchButton : UIButton


@end



ExpandTouchButton.m

#import "ExpandTouchButton.h"


@implementation ExpandTouchButton


- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

{

    CGFloat margin = 15.0;

    CGRect area = CGRectInset(self.bounds, -margin, -margin);

    return CGRectContainsPoint(area, point);

}


@end


끝.


iOS 개발하다가 액션시트하나를 쓰려면 UIAlertDelegate를 사용해서 delegating 을 해야 한다

근데 개인적으로 delegate 구조를 안좋아해서. (써야하는 곳이 있기는 하다.)

block으로 처리되는게 없나 싶어서 찾아봤더니 당연히(?) 있었다.


4년전에 이미 만들어진 라이브러리 -_-)ㅋ


https://github.com/jivadevoe/UIAlertView-Blocks



혹시나 해서 공유합니다.

역시나 MIT License 입니다.

'iOS > 라이브러리' 카테고리의 다른 글

FaceAware  (0) 2016.11.16

https://developer.apple.com/app-store/review/guidelines/kr/#hardware-compatibility


지금까지 한글 버전이 없었던거 같은데 한글 버전이 나왔습니다.


개발자라 (개인 개발로 iOS앱을 내본적은 없고, 안드로이드만 내봤음) 잘 모르고 있었는데

시간 날 때 정독 해봐야겠습니다.


참고하세요 :)

+ Recent posts