no image
[UIKit] UIViewController, modal 화면표시에 대해서(+커스텀)
UIViewController를 Modal로 표시하는 것이 대해 글을 작성해 보려고 합니다.  "modal로 화면을 띄운다,,, modal로 표시를한다" 등 모달이라는 말이 화면과 관련된 말임은 알고 있었습니다.  하지만 정확히 어떤 목적을 의미하는 지는 생각하지 못했던 것 같습니다.  "modal로 띄운다는 진행중이던 흐름을 잠시 뭠추고, 새로운 작업이 생기며 그것을 해결해야 이전 플로우로 돌아갈 수 있다"  이 정도로 이해할 수 있습니다.  이렇게 이해하면 Alert를 왜 Modal로 방식으로 화면에 표시하는지 이해가됩니다.  진행중인 플로우를 끊고 잠시 Alert창을 유저가 확인해야하기 때문이죠.  UIVIewController의 present함수를 사용하면 Modal로 화면을 띄울 수 있습니다. ..
2024.09.05
no image
[UIkit] 키보드 어보이던스(with 카카오톡 채팅방 만들기)
안녕하세요! 우리가 카카오톡을 사용할 때 아래 영상처럼 채팅을 치기 위해선 키보드(소프트)를 사용해야합니다.  영상을 자세히 보시면 키보드가 채팅이 입력되는 공간을 가리지 않고 밀어내는 것을 확인할 수 있습니다. 이런 동작을 Keyboard Avoidance라고 합니다. 일전 SwiftUI를 사용하여 키보드 어보이던스를 피하는 글을 작성한 적이 있었는데요 UIKit같은 경우 SwiftUI와 달리 키보드 어보이던스가 자동으로 실행되지 않습니다.(자동으로 키보드 어보이던스가 적용되는 SwiftUI는 해당 기능을 끄는 것이 까다롭습니다.. UIKit 최고 🙌) 아래 영상은 제가 직접 구현한 채팅창 화면입니다.  먼저 입력영역은 UITextView로 구현하였습니다. 카카오톡같은 경우는 멀티라인 입력을 지원하기..
2024.06.27
no image
[UIKit] 커스텀 탭바 만들기
안녕하세요! ✋ 주니오스입니다. 오늘은 커스텀 탭바를 만들어봄과 동시에 컨테이너 뷰 컨트롤러에 대해서도 학습해 보려고 합니다. 먼저, 아시다시피 뷰 컨트롤러에는 두가지 역할이 있는데요. 바로 컨텐츠를 표시할 UIView를 관리하는 역할인 컨텐츠 뷰 컨트롤러가 있습니다. 그리고 다수의 뷰 컨트롤러들을 자식 뷰 컨트롤러표 보유하며 관리하는 컨테이너 뷰 뷰컨트롤러가 있습니다. 전자의 경우는 익숙하지만, 후자의 경우 조금 어렵더군요. 먼저 커스텀 탭바를 만들어 볼 것인데요 구조는 아래와 같습니다.   오른쪽 UIWindow위에 그려진 것이 디바이스 화면에 표시되는 레이아웃입니다. 아래에 화면을 선택할 수 있는 탭바가 있고, 바로위에 이에 상응하는 화면이 나오게 됩니다. 왼쪽그림에서 우선 가장 바깥쪽에 있는 것이..
2024.04.29
no image
[UIKit] convert매서드를 이용한 상대 좌표 구하기
안녕하세요 주니오스입니다~! ✋ 기본적으로 제공되는 frame프로퍼티의 경우 부모 좌표공간을 기준으로 현재 뷰의 위치를 알려줍니다. (bounds의 경우 자신의 좌표 공간에서의 위치를 의미합니다.) 하지만 개발을 하다보면 특정 뷰의 위치(frame)를 특정 뷰를 기준으로 알고싶은 경우가 있습니다. 이때 사용할 수 있는 UIVIew의 인스턴스 매서드가 바로 convert입니다. 이번 글에서는 해당 매서드의 사용법에 대해 다뤄보려고 합니다. 공식 문서를 들어가 보면 총 3가지 매서드가 존재합니다. 하지만 설명만 읽어서는 사실상 기능에 대한 파악이 힘듭니다. convert(CGRect, to: UIView) 먼저 to매개변수가 존재하는 매서드부터 살펴보겠습니다. 먼저 해당 매서드를 호출하기 위해선 3가지 객..
2024.04.01
no image
[UIKit] UIKit 앱실행부터 UIView까지(iOS 13 ⬆)
안녕하세요 주니오스입니다✋ 한동안 프로젝트에 참여하느라 블로그글을 자주못썼습니다.😓 SwiftUI 프로젝트를 진행하던 도중 UIKit 프레임워크를 사용해하는 경우가 생각보다 많았습니다. UIKit공부에 중요성을 느끼게 되어 해당 프레임워크의 앱 실행 플로우에 대한 포스팅을 진행하게 되었습니다. 공식적으로 제공하는 구조는 아래와 같습니다. UIApplication 각각의 앱은 하나의 어플리케이션 객체를 가집니다. 앱을 실행하면 가장먼저 UIApplication인스턴스가 싱글톤 패턴으로 생성됩니다. shared 전역 프로퍼티를 통해서 접근할 수 있습니다. 앱에 발생하는 모든 이벤트는 어플리케이션 인스턴스를 거쳐 적절한 UIWindow에 전달됩니다. iOS 13이상 부터는 AppDelegate를 통해서 Sce..
2024.03.12