Gesture Recognizer 제스처 인식기는 여러 제스처 관련 이벤트를 인식할 수 있습니다. 특정 제스처 이벤트가 일어날 때 마다 각 타깃에 맞는 액션 메시지를 보내어 제스처 관련 이벤트를 처리할 수 있습니다. 예를 들어, 단순하게 화면을 터치할 수도 있고, 길게 누를수도 있고, 두손가락으로 확대할 수 도 있고, 화면도 넘길 수 있습니다. UIGestureRecognizer 종류 UIGestureRecognizer 클래스는 특정 제스처 인식기에 대한 동작을 정의합니다. 또한 델리게이트 객체를 활용하여 일부 동작을 더욱 세밀하게 사용자화 할 수 있습니다. Gesture Recognizer를 사용하기 위해서 Target-Action 연결을 설정한 후 UIView의 메서드인 addGestureRecogn..
Target-Action 디자인 패턴 Target-Action 패턴 역시 상당히 많이 사용되며 @IBAction func .... 의 형태로 Storyboard에 있는 뷰를 ViewController에서 참조할때 많이 사용하셨을 겁니다. 모르고 써도 잘 되지만 알고 사용하면 더 잘, 넓게 사용할 수 있겠죠 ?? 라고 누군가가 조언해주었슴다 ㅎ 다시 본론으로 .. Tartget-Action 디자인 패턴에서 객체는 이벤트가 발생할 때 다른 객체에 메시지를 보내는 데 필요한 정보를 포함합니다. 액션은 특정 이벤트가 발생했을 때 호출할 메서드를 의미합니다. 타겟은 액션이 호출될 객체를 의미합니다. .... 뭔가 번거로워 보이지 않나요? 타겟 객체에 그냥 메서드를 넣으면 안되나? Apple이 뭔가 만들어 놓은 데..
싱글턴(Singleton) 싱글턴은 '특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체'를 의미합니다. 싱글턴은 애플리케이션이 요청한 횟수와는 관계없이 이미 생성된(static) 같은 인스턴스를 반환합니다. 즉, 애플리케이션 내에서 특정 클래스의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있습니다. 예시를 통해 살펴보겠습니다. 메타몽 소환! 간단하게 버튼에 따라서 서로 다른 페이지를 띄워주고 다시 뒤로 갈 수 있는 UI를 구성했습니다 class Singleton{ static let shared = Singleton() var state: MetamongState? } enum MetamongState: String{ case metamong case metamong_ch..
iOS 개발에서 정말 많이 쓰이는 Delegation Pattern에 대해서 알아보겠습니다. Delegate 위임하다 Delegate Pattern 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공합니다. 다시 말해, 어떤 객체에서 일어나는 이벤트에 관한 혹은 어떤 객체에 뿌려줄 데이터에 관한 코드를 다른 객체에서 작성해주는 것을 말합니다. 그리고 이러한 행위는 반드시 protocol을 동반합니다. CEO/ secretary Delegate Pattern을 이해하기 정말 좋은 Bob 님의 블로그 예시 '사장과 비서'를 인용해서 설명을 이어가겠습니다. protocol JobDelegate{//protocol : 서로간의 소통을 위한 약속 func passData(jobResource..
ViewController를 생성하게 되면 저 viewDidLoad() 함수를 보실 수 있습니다. 뷰의 상태변화 감지 메서드 뷰의 상태와 레이아웃 변화에 따라 호출되는 메서드를 의미합니다. 각각에 대해서 알아보아요 뷰의 상태 변화 메서드 뷰가 나타나거나 사라지는 등 뷰가 화면에 보이는 상태가 변화할때 호출되는 메서드입니다. 각 메서드가 호출 될때의 시점이 다르다 보니 그에 따라 함수 내부에서 수행하면 좋은 작업도 서로 다릅니다. viewDidLoad() 뷰 계층이 메모리에 로드된 직후 호출되는 메서드 뷰의 추가적인 초기화 작업을 하기 좋은 시점 메모리에 처음 로딩 될때 1회 호출되는 메서드로, 메모리 경고로 뷰가 사라지지 않는 이상 다시 호출되지 않음 viewWillAppear(_ animated: Bo..
저번 포스팅에 이어서 이번에도 화면전환에 관한 얘기를 해보자 합니다 모달(Modal) 사용자의 이목을 끌기위한 화면전환 기법입니다. 화면위에 다른 화면을 띄워(Presenting) 사용자에게 어떠한 입력이나 확인을 요구합니다. 저번에 톺아보았던 '내비게이션 인터페이스'와는 달리 정보의 흐름이 아니라 단지 사용자로부터 입력을 받기위해 이목을 끄는 방식입니다. 그러다 보니 모달로 표현되는 화면은 사용자가 빠르게 응답할 수 있도록 심플해야 합니다. 뷰컨트롤러는 2가지 방법으로 화면상에 나타납니다. 저번에 톺아봤던 내비게이션처럼 컨테이너뷰 컨트롤러에 임베드하거나, 이번에 배울 프레젠테이션을 통해서 입니다. Presenting a ViewController present 기능은 UIViewController 클래..
내비게이션 인터페이스란 iOS 에서 정말 많이 사용되는 인터페이스인데요, 주로 계층적 구조의 화면전환을 위해 사용되는 드릴 다운 인터페이스(drill-down interface)입니다. 드릴 다운 인터페이스?? 그림처럼 페이지를 안으로 타고타고 가는 방식을 말합니다 내비게이션 인터페이스를 구현하기 위해서는 내비게이션 컨트롤러가 필요하구요 내비게이션 컨트롤러 내비게이션 컨트롤러는 2개의 뷰를 나타냅니다. 하나는 내비게이션 바(또는 툴바)이고 다른 하나는 내비게이션 스택에 쌓일 컨텐트 뷰입니다. 내비게이션 스택 컨텐트 뷰에 표시될 ViewController들의 배열입니다. 이런 식으로 현재 보이는 페이지가 스택의 top에 위치하게 되고 뒤로 가기(버튼/스와이프)를 함에 따라 스택에서 pop을 하고, 스택의 ..