HitTest와 touchesBegan은 무슨 관계가 있을까?
·
iOS/UIKit
👋 들어가기 전UIKit에서 이벤트를 처리할 때, 항상 HitTest와 touchesBegan을 혼동하고 왜 혼동할까라는 근본적인 의문이 있어이번에 여러가지 실험을 통해 나만의 정리를 한번하려고한다. 그전에 이전 부스트 캠프에서 공부했던 내용을 잠깐 정리하고 가보자.https://hamp.tistory.com/19 UIResponder Chain챌린지 때 간단하게만 보고 지나간 iOS에서 이벤트 처리하는 과정을 다시 한번 학습해보자. 처음은 각 과정에서 등장하는 구성요소의 개념부터 학습해보자.1. UIEvent앱에서 하나의 유저 인터렉션hamp.tistory.com🏁 학습할 내용HitTest의 목적과 흐름touchesBegan의 목적과 흐름실험관계 정리🧨 HitTest🎯목적override func..
레이아웃 핵심 프로세스
·
iOS/UIKit
👋 들어가기 전이전에 학습한 https://hamp.tistory.com/210 디바이스 회전 포스팅 마지막 질문인회전 시 UICollectionView와 같은 cell에 대한 레이아웃 갱신을 이번 포스팅에서 이어가보자.🏁 학습할 내용레이아웃의 core processinvalidateLayout🚅 레이아웃 core process먼저 전체적인 과정은 위와 같다.각 과정을 차례대로 알아보자.🚦prepare⭐️ 정의레이아웃 계산하기 전 미리 필요한 데이터나 상태를 준비하는 함수간단히 말하면 레이아웃을 그리기 전 사전 작업(셀 위치 계산, 내부 캐시 초기화 등)을 준비📞 호출 시기CollectionView의 내용이 처음 보일 때 또는 layout이 invalidated 될 때 호출된다. 🖼️ col..
디바이스 회전 대응
·
iOS/UIKit
👋 들어가기 전최근 들어 iPad 앱을 도전해보고 싶은 마음이 점점 커지고 있다.그래서 앱에서 디바이스를 회전했을 때 대응하는 과정을 한번 학습해보고 싶었다.🏁 학습할 내용먼저 가장 필요한 내용이 화면 회전 시 호출될 생명주기와대응코드가 들어갈 위치를 알아보자. 이후 엣지 케이스 대응을 위한 추가학습 미리보기까지 정리해보자. viewWillTransitionlayoutSubview🔄 viewWillTransition⭐️ 정의공식문서를 살펴보면 viewWillTransition은 뷰들을 포함하는 컨테이너의 사이즈가 변경되면 호출된다고 써 있다. 가장 대표적인 컨테이너 사이즈 변화는 디바이스 회전이 있다.아이패드 일 때는 스플릿 뷰도 포함된다.🔥 구성요소 override func viewWillTr..
PhotoPicker 최적화하기
·
iOS/UIKit
👋 들어가기 전현재 하고있는 프로젝트는 이미지가 굉장히 중요하다.이미즈는 크게 2가지 종류가 있을 수 있다. 첫 번째는 링크 또는 서버에서 제공해주는 이미지고 두 번째는 나의 로컬 갤러리를 통해 불러오는 이미지가 있다. 여기서 애플에서 제공해주는 PHPickerViewController를 사용하면 쉽게 앨범 이미지를불러올 수 있지만 디자이너님의 요구는 커스텀이 가능한 뷰를 원하고 있어 직접 자체 개발을 해야했다. 현재 UI Framework가 SwiftUI로 개발되어 ScrollView와 LazyVGrid를 이용하여 어렵지 않게 UI는 구성했다. 여기서 처음했던 기술적인 도전은 사진을 가져오는 과정을 최대한 modern concurrency를 이용하여나름 최적화와 completion Handler를 c..
Priority
·
iOS/UIKit
👋 들어가기 전우리는 지난 포스팅에서 intrinsicContentSize에 대해서 알아봤다. 이번에는 intrinsicContentSize에 대한 우선순위를 지정할 수 있는 방법을 알아보자.✊ 왜 필요할까??먼저 다음 코드를 보자.label1.text = "첫번 째 레이블입니다."label2.text = "두번 째 레이블입니다."label1.backgroundColor = .greenlabel2.backgroundColor = .redview.addSubview(label1)view.addSubview(label2)NSLayoutConstraint.activate([ label1.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadin..
IntrinsicContentSize
·
iOS/UIKit
👋 들어가기 전이번 포스팅은 저번 Auto Layout 정의를 배웠고 이번에는 Auto Layout을 적용하기 위해 알아야할IntrinsicContentSize에 대해 알아보자.✊ 정의링크 공식문서를 살펴보면 다음과 내용을 살펴볼 수 있다. The natural size for the receiving view, considering only properties of the view itself. 컨텐츠의 본질적인 크기를 가르킨다. 그렇다면 컨텐츠가 없는 뷰는 이 값이 없단는건가?? 그렇다 컨텐츠가 있어야 한다. 그러면 어떤 뷰들이 해당될까?☝️ 소유 여부ViewIntrinsicContentSize WidthIntrinsicContentSize HeightUIViewXXUISliderOXUILabel,..