[iOS] 제스쳐 사용하기 (UIGestureRecognizer)

맨날 코드 작성 안하고 이상한것만 가끔 가끔 올리다가 깃헙에 샘플 레포시토리도 만들겸 간단한 제스쳐 등록 예제를 만들었다. 기본은 제스쳐를 생성하고 인식할 뷰에 추가를 하는것

기본적으로 iOS에서 지원되는 제스쳐는 tab, pinch,  rotation, swipe, pan, screen edge pan, long press이다. 구분을 하자면 pinch와 rotation의 차이는 pinch는 사진을 확대/축소 하듯이 손가락 두개 이상을 오므리거나 펼때 인식하고 rotation은 […]

UILabel에 글이 몇줄인지 확인하기

label 에 들어있는 텍스트가 몇줄인지 확인하는 소스  

     

iOS에서 게임처럼 한글자씩 출력되는 텍스트 창 만들기

게임을 하다보면 캐릭터들이 서로 대화를 할때 말하는 느낌을 주기 위해 한글자씩 출력이 되는 연출이 있다. 꽤 예전부터 지금까지 고전적으로 사용된 연출이다.  하지만 아쉽게도 기본 UILabel에서 지원해주지 않아서 간단하게 만들어 보았다.      

사용법은 간단하다고 생각한다!  프로젝트에 RGMessageLabel를 추가해주고 메인에 되는 메소드는 -(BOOL)animationOneLatterText:(NSString *)text으로 메시지가 바뀌고 애니메이션이 시작될때마다 yes를 리턴해주고 만약 애니메이션이 진행중이면 no를 리턴해준다. […]

현재 실행중인 iOS디바이스의 종류(아이폰, 패드, TV, CarPlay) 구분하기

유니버셜 앱을 만들다 보면 현재 내 앱을 실행하고 있는 디바이스가 무었인지 알고 싶을떄가 있다. 그럴때는 UIDevice클래스를 호출해서 확인할 수 있다.

리턴값은 다음과 같다.

이번 블로그를 포스팅하며 알게 된거지만 이번에 iOS 9.x가 되면서 CarPlay 와 TV가 추가되었다. TV앱은 언젠가 시간이 된다면 한번 해보고 싶다

내가 생성한 하위 객체에서 이벤트를 상위객체로 보내는 방법! – 3부 Block패턴

이번에 소개할 패턴은 Block패턴이다 애플 레퍼런스에서 소해주지는 않은 방법이고 혼자 개발을 하면서 애플에서 추천하는 Block 문법과 KeyValue 코딩을 반반 섞은 방법이다. 처음 이 패턴을 고민한건  MVC패턴을 통해 작업을 진행하고 있었다. 그러다 뷰컨트롤러 안에서 커스텀 뷰를 만들어가지고 작업을 진행하는데 뷰 안에 UI처리가 아닌 데이터 처리등이 섞이는게 싫어서 어떤 방법을 써볼까 고민하다가 뷰 안에 블록을 통해 객체를 […]

내가 생성한 하위 객체에서 이벤트를 상위객체로 보내는 방법! – 1부 Delegate패턴

뷰에서 팝업창을 하나 만든다고 가정을 하자. 팝업창에는 여러가지 정보나 버튼이 있고 그 버튼을 누르면 팝업창을 생성한 상위 뷰에 선택한 메뉴가 보이는 구조라고 하면 이걸 어떻게 구현할까? 팝업을 생성한 뷰에서는 팝업창을 제어하기가 쉽다. 하지만 팝업창에서는 상위뷰를 제어하는게 생각처럼 쉽지는 않다. 이럴때 쓸수있는 패턴들이 있다. 대표적으로 Delegate 패턴을 시작으로 NSNotificationCenter, singletone, block, keyValue….등등  시간이 날때마다 하나씩 포스팅을 […]

사용자의 위치 승락 여부 확인 [iOS]

위치 기반 앱을 개발하면 당연히 사용자의 위치를 얻어오는 요청을 한번 이상 하고 이걸 거절할 경우에 따른 예외처리도 매우 중요하다. 사용자의 위치값에 대한 승인여부는 다음과 같은 메소드를 호출하면 확인할 수 있다.

리턴값은 CLAuthorizationStatus 형식으로 오며 헤더파일을 보면 다음과 같이 온다.

    kCLAuthorizationStatusNotDetermined -> [0] 한번도 인증 요청을 안했을 경우. 사용자는 아직 이 앱이 […]

NSArray에서 한글,영문순으로 정렬하기

NSSortDescriptor를 사용하면 숫자, 영문, 한글 순서대로 정렬이 된다. 오늘 요청을 받은게 한글, 영문 순서로 정렬되었으면 하는 요청을 받았다. 인터넷에서 찾은 소스는 배열안에 NSString만 받는걸 기준으로 되있어서 해당 소스를 블록문을 사용해서 안에 있는 오브젝트를 비교하는 형식으로 변경하였다. NSArray 안에 다른 객체별로 클래스를 맞춘후 비교하면 문제 없이 정렬되는것을 확인하였다.

  참조 글 – https://gist.github.com/acidsound/5072229

UIAlertController 사용하기 [UIAlertview, UIAlertController]

 

UIAlertView는 예전부터 사용자에게 경고나 반드시 필요한 메시지를 보여주기 위해 자주 사용되어왔다. 그런데 이게 iOS 9에서 디플리케이티드 되어가지고 사용할 수 없게 되었다. 내용을 읽어보면 새로 추가된 UIAlertController을 사용하라고 한다. 간단한 예제를 만들었다.

사용법은 UIAlertController을 생성하고 거기에 버튼을 UIAlertAction으로 하나씩 추가해준다. 예전과 같이 델리게이트 형식이 아닌 블록형식으로 액션을 작업 할 수 있어서 사용하기가 더 […]

클래스를 카테고리를 사용하여 확장하기 [iOS]

Objective-c에는 클래스를 수직적으로 확장 할 수 있도록 상속받아서 확장받는 방법과 수평적으로 확장할 수 있는 카테고리 두가지 방법이 있다. 카테고리의 특징은 해당 클래스에 새로운 변수를 추가 할 수 없고 메소드만 추가 할 수 있다. 처음에는 어디다 쓰지? 싶은 생각이였지만 쓰다보니까 다 방법이 있더라. 내가 만든 클래스보다는 다른 사람이 만든 클래스를 쓸때, 특히 애플에서 기본적으로 제공하는 NSString등의 […]