- [ UIKit ][UIKit] Hugging Priority&Compression Resistance Priority2025-02-08 17:36:07문제상황네이버 웹툰 메인 페이지 UI를 따라만들어 보던 중에, 작가명과 작품 평점을 스택으로 묶어서 관리하였더니 위 사진처럼 앞에 작품 평점이 ...으로 간략화되거나 작가명이 ...으로 간략화되는 문제가 발생했다.해당 스택의 distribution(분포)를 Fill로 설정하였고 너비가 이미지 너비만큼으로 고정되어있다보니 랜덤으로 우선순위가 적용되는 듯 하였다.이에 해당 스택에 포함된 레이블들의 우선순위를 정해줘야 했다. 내가 원하는 우선 순위는 작품 평점 레이블 >> 작가명 레이블로 작품 평점을 무조건 보이도록 하려고 했다.문제해결size inspector에는 이를 해결할 수 있는 수단이 존재하는데바로 Content Hugging Priority와 Content Compresstion Resistance..
- [ UIKit ][UIKit] Bounds와 Frame의 차이2025-02-08 17:34:18Bounds와 Frame의 차이View의 위치나 크기를 확인하는 방법은 Bounds와 Frame 프로퍼티를 사용하는 것이다.둘 다 View 위치나 크기를 확인할 수 있는데 왜 구분해두었는지 알아보자.차이점두 프로퍼티의 차이점은 위치값이 상대적인지 절대적인지의 차이이다.예를 들어 아래 뷰가 있다고 가정해보자.FrameFrame은 superView에 대한 상대적인 위치(좌표값)을 가지게 된다.superView의 왼쪽 모서리를 (0,0)으로 기준으로 두었을 때, Frame은 (0,0)으로 부터 얼마만큼 떨어졌는지에 대한 좌표값을 가지게 된다.View의 Frame.origin은 (55,68)을 가지게 된다.BoundsBounds는 Frame과 다르게 절대적인 자신만의 좌표값을 지니게 된다.즉 본인의 위치가 곧 ..
- [ UIKit ][UIKit] LayoutSubivews2024-08-08 22:08:03개발을 하다보면, View의 너비나 높이를 알고 싶어도 ViewDidAppear 이 후에나 확인이 가능하다.그러다 layoutSubviews 메서드 내부에서는 언제든 너비나 높이를 확인할 수 있어서 자주 사용하고 있었다. layoutSubviews가 정확히 언제 호출되고 무슨 역할인지 알아보려 한다. LayoutSubviews란?layoutSubviews 메서드는 UIView의 서브뷰들의 배치와 크기가 어떻게 조정될지 결정한다. 자동 호출 시점- View의 Frame 또는 Bounds가 변경될 때- 서브뷰가 추가 또는 삭제 될 때 - 뷰가 처음 화면에 표시될 때 직접적인 호출을 하지 않아도 됨 이처럼 아직 view가 나타나지 않은 viewWillAppear 시점과 view가 나타났음을 알려주는 viewD..
- [ UIKit ][UIKit] Compositional Layout Section2024-08-07 14:59:55Compositional Layoutcompositional layout은 UICollectionView 레이아웃의 한 종류로 차례로 item을 구성하고, group을 구성하고, section을 차례로 구성이 가능하다 [ 공식 페이지 제공 코드 ]func createBasicListLayout() -> UICollectionViewLayout { let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0)) ..
- [ UIKit ][UIKit] View Life Cycle2023-06-11 13:59:131. 개요 ViewController의 생명주기로 view가 나타나고 사라지는 과정에서 관련된 메소드들이 호출되어진다.이를 잘 활용하면 원하는 타이밍에 내가 원하는 동작을 수행할 수 있다. 2. View Life Cycle의 순서 3. View Life Cycle method 종류 및 기능// 컨트롤러가 관리하는 view를 생성할 때 호출loadView()// view가 메모리에 올라갈 때 호출viewDidLoad()// view 계층에 view가 추가되기 직전 호출viewWillAppear(_:)// view 계층에서 view가 추가된 직후 호출viewDidAppear(_:)// view 계층에서 view가 삭제되기 직전 호출viewWillDisappear(_:)// view 계층에서 view가 삭제..