iOS/AutoLayout 7

Compression Resistanse

label 오브젝트 두개로 시작해보자. 간격은 top, leading, trailing 20씩 주었다. compression registance Priority는 지금 작동하지 않는 상황이다. 단어를 그대로 보면, compresion은 "압축", Registance는 "저항" 이다. 밀려서 눌려버리는 상태를 막아서 내크기를 유지한다는 의미이다. 값이 커질수록 우선순위가 높아져서 크기를 유지시켜준다. "압축되어 찌그러질 때"나타나는 상황이므로, 현재 나의 오브젝트보다 더 큰 오브젝트가 존재할때 필요하다. 따라서 위 그림에서는 필요하지 않다. 위 이미지는 오른쪽의 Label을 너무 길게 만들어서 왼쪽에 있는 Label을 찌그러트릴 수 있기 때문에 에러가 발생한다. 나 자신의 오브젝트를 압축할 것인지, 다른 ..

iOS/AutoLayout 2022.01.17

Hugging Priority

Priority설명을 하기 전에, Label의 경우 크기가 정해져 있지 않기 때문에 크기를 지정해 주지 않아도 contraint 에러가 발생하지 않는 다는 것을 알아두자. trailing contraint가 빠져있기 때문에 이후에 다른 뷰와 겹칠 수 있어 발생하는 경고이다. trailing을 40으로 설정해주었더니 에러가 발생한다. 오브젝트의 size inspector에서 priority를 설정할 수 있다. 내가 가지고 있는 컨텐츠 값 그대로 유지를 할 수 있는 우선순위를 Hugging Priority라고 한다. 숫자가 높을수록 우선순위가 높아 우선 수행된다. 우선순위 값은 1~1000사이이다. 1000이라는 값은 어떤 설정에서도 그 속성은 풀리지 않음을 의미한다. 무조건 그 값을 유지한다는 의미이다...

iOS/AutoLayout 2022.01.17

multiplier

View 를 하나 추가하고, 초기 constraint와 화면은 다음과 같다. constraint 에서는 Top, Leading은 시작하는 좌표를 몇배로 늘릴 것인지를 의미한다. Leading의 시작하는 좌표가 0이라면 Multiplier를 몇배로 설정하더라도 0이라는 점에 유의하자. Bottom과 Trailing은 '끝나는 지점' 이기때문에 끝의 좌표는 이미 정해져있는 것이고, 오브젝트에 Multiplier를 몇배를 적용해야 끝나는 좌표가 되는지를 계산하는 것이기 때문에 나눗셈처럼 동작한다. Equal height, Equal width 에서 Multiplier는 어느 것이 다른것의 몇배의 크기인지를 나타낸다. 두개의 뷰의 constraint를 top, leading, bottom, traling을 20..

iOS/AutoLayout 2022.01.05

여러 오브젝트를 사용해서 AutoLayout 적용하기.

여러개 (2개 이상) 의 오브젝트를 통해서 오토레이아웃을 적용해보자. 두개의 오브젝트가 다음과 같이 있을 때, 파란색 뷰에 상하 좌우 20씩의 constraint를 주게되면 파란색 뷰의 Trailing은 노란색 뷰와의 간격이 20이 되고, 노란색 뷰는 자동적으로 파란색 뷰와 Leading constraint가 20이 된다. constraint를 설정할 때 중요한 것이 크기와 위치가 결정되어야 한다는 점인데, 여기서 두개의 뷰에 constraint를 설정해 주면, 위치는 결정되지만 크기가 결정되지 않기 때문이다. 파란색 뷰나 노란색 뷰 둘 중 하나의 width를 설정해주면 크기또한 결정할수 있게 된다. 두개의 뷰의 크기를 같게 하고 싶다면 commad를 사용하거나 드래그를 통해 두가지를 선택한 다음 Equ..

iOS/AutoLayout 2022.01.04

alignment

Add new alignment Constraints를 누르면 설정할 수 있으며 Horizontally In Container는 상위 뷰 기준으로 좌우 가운데 정렬을 하겠다는 의미이고, Vertically in Container는 상위 뷰 기준으로 위아래 가운데 정렬을 하겠다는 의미이다. 가운데 정렬만 설정해 주면 요소의 위치는 결정되지만 크기는 결정되지 않으므로 다음과 같이 빨간 선으로 에러가 발생한다. Leading/Trailing의 contraint를 설정해주거나, Bottom/Top 의 constraint를 정해주면 무조건 가운데 정렬이라는 것을 xCode가 알고 있기 때문에 크기를 결정할 수 있으며, 또는 constraint에서 고정적인 크기를 지정해주어도 된다.

iOS/AutoLayout 2022.01.04

iPhone_SafeArea

iPhone X 가 출시되면서, 휴대폰의 상태 표시 바와 제스처 기능을 위해서 SafeArea가 생겼다. File Instructor에서 SafeArea를 사용할지 말지를 결정할 수도 있다. SafeArea영역은 다음과 같으며, 이 영역을 벗어나서 기능을 추가하는 것은 권장되지 않는다. 애플 가이드라인에서도 SafeArea를 벗어나는 영역은 사용하지 않도록 권장되고 있다. 기존에 하던대로 constraint의 Top, Bottom, Leading, Trailing의 간격을 0으로 설정하면 SafeArea를 기준으로 하기 때문에 다음과 같이 나타난다. 어떤 이미지를 배경화면으로 설정하려고하거나, 배경화면의 색상을 지정하는 경우, SafeArea 때문에 위아래의 공간에 적용되지 않기 때문에 어색해 보인다. ..

iOS/AutoLayout 2022.01.04

constraint_1

command + shift + L으로 라이브러리를 연 후, view를 선택해 화면에 뷰를 놓을 수 있다. 이 뷰를 가지고 contraint에 대해서 공부해보자. 일단 뷰에 색깔을 넣어 구분해주었다. constraint는 이러한 요소 하나하나의 위, 아래, 왼쪽, 오른쪽 가격이 얼마나 되느냐를 나타내는 것이다. 요소를 선택한 후, 오른쪽 아래의 Add New Contraint버튼을 누르면 constraint를 설정할 수 있다. 간단하게 표시되어 있기 때문에 바로 어디에 대한 간격을 나타내는지를 인지 할 수 있다. contraint to margin은 margin에 대한 개념을 조금 더 공부한 후에 사용하기 위해서 체크하지 않았다.. margin을 체크하면 우리가 생각하는 것과는 다르게 표시될 수 있다. ..

iOS/AutoLayout 2022.01.04