23.11.10 hugging과 resistance의 개념정리 / 뷰 컨트롤러의 라이프 사이클 개념정리

2023. 11. 10. 14:45IOS [ 개념정리 ]

huggingcompressionResistance는 Auto Layout에서 뷰의 크기와 내용에 대한 우선순위를 제어하는 두 가지 속성.

 이 속성들은 주로 스택 뷰 (Stack View) 내에서 뷰의 크기를 결정하는 데 사용된다.

 

먼저 사전적의미 로는 

Content Hugging (Hugging):

Content Hugging은 뷰가 자신의 내용(content)에 "붙어있으려" 하는 정도를 나타냅니다.
뷰의 hugging priority가 높을수록 해당 뷰는 자신의 내용에 더 "붙어" 크기를 줄입니다.
Priority 값이 높을수록 해당 축(가로 또는 세로)에서 크기를 유지하는 것이 더 우선됩니다.

 

라는데, 잘 설명해보자면

예를 들어서 , 다음 이미지를 보면

(직접 그림)

왼쪽뷰보다 오른쪽뷰가 더 같은선상에서 크게 범위를 차지하고있는데 ,

그 이유가 바로 위에써있는 숫자인 251 , 250 처럼 

Content Hugging 수치가 오른쪽이 더 낮기때문이다.

Content Hugging은 자신의 컨텐츠에 찰싹 붙어있으려는 습성이기때문에,

priority수치가 높을수록 찰싹 붙어 부동의 크기를 유지하는것이다.

 

 

Compression Resistance:

Compression Resistance는 뷰가 외부에서 발생하는 압축(Compress)에 대한 저항력을 나타냅니다.
뷰의 compression resistance priority가 높을수록 해당 뷰는 외부에서의 압축에 저항하려고 노력하며 크기를 유지합니다.
Priority 값이 높을수록 해당 축에서 크기를 유지하는 것이 더 우선됩니다.
이 두 가지 속성은 주로 스택 뷰에서 유용하게 사용됩니다. 스택 뷰는 자식 뷰들의 크기를 관리할 때, Content Hugging과 Compression Resistance를 기반으로 뷰의 크기를 조절합니다. 예를 들어, 버튼과 레이블이 포함된 수평 스택 뷰에서 버튼의 Content Hugging을 높게 설정하면, 레이블이 길어지더라도 버튼은 자신의 크기를 유지하려고 노력합니다.

 

Compression Resistance도 동일하다.

Content Hugging과 반대의 개념으로

Compression Resistance는 수치가 높은쪽이 낮은쪽을향해 커지는 것이다.

위의 이미지를 참고하자면 , 파란색 view가 빨간색view쪽으로 커지는게 맞다.

 

.

.

.

뷰 컨트롤러의 라이프 사이클

 

Initialization (초기화):
init(coder:) 또는 init(nibName:bundle:) 등의 초기화 메서드를 통해 뷰 컨트롤러가 생성
초기 설정을 수행할 수 있는 단계


LoadView (뷰 로딩):
loadView() 메서드를 통해 뷰 계층이 메모리에 로드된다
기본적으로는 스토리보드에서 정의한 뷰가 자동으로 로드되지만, 경우에 따라 사용자 정의 뷰를 로드할 수 있음


ViewDidLoad:
뷰가 메모리에 로드된 직후 호출되는 메서드
초기 설정 및 데이터 로딩과 같은 일회성 작업을 수행하기에 적합하다


ViewWillAppear:
뷰가 화면에 나타나기 직전에 호출되는 메서드
애니메이션 효과나 뷰 업데이트와 관련된 작업을 수행하기에 적합하다


ViewDidAppear:
뷰가 화면에 나타난 직후 호출되는 메서드
뷰가 화면에 완전히 나타난 이후에 추가적인 작업을 수행할 수 있다

 

ViewWillDisappear:
뷰가 화면에서 사라지기 직전에 호출되는 메서드
예를 들어, 현재의 뷰 컨트롤러에서 필요한 데이터를 저장하는 등의 작업을 수행할 수 있다


ViewDidDisappear:
뷰가 화면에서 완전히 사라진 이후 호출되는 메서드
부가적인 정리 작업이나 리소스 해제와 관련된 작업을 수행할 수 있다


Deinitialization (소멸):
뷰 컨트롤러가 메모리에서 해제되기 직전에 호출되는 메서드
리소스 해제 등의 마무리 작업을 수행할 수 있다

 

정리 
뷰 컨트롤러의 라이프 사이클은 화면 전환, 데이터 로딩, UI 업데이트 등을 관리하는 데 중요한 역할을 함 .

 이를 통해 앱의 화면 전환과 관련된 작업을 효율적으로 처리하고 사용자 경험을 개선할 수 있음