티스토리 뷰

 

StoryBoard에서 Constraint를 잘 설정해 줬음에도 가끔 이런식으로 스토리보드 에러가 날 때가 있다.

간격도 잘 맞춰줬는데 왜 이런게 뜨지? 물론 빌드에는 영향이 안 가지만

UI자체가 원하는 방향으로 그려지지 않을 때가 있다.

 

 

 

오토레이아웃의 필수 조건이니 공부를 했었지만... 개념 한 번 다시 잡고 가자!

 

 

 

iOS의 View들 중 몇 가지는 본질적인 크기가 있다.

레이블이면 1줄짜리 레이블 크기... textField는 텍스트 필드 크기... 스위치는 스위치 크기...

그냥 뷰를 끌어다 놓으면 생기는 크기가 있다. 그래서 width랑 height를 따로 지정해 주지 않아도 되지.

 

 

그걸 iOS에서는 intrinsicContentSize라고 부른다.

(그냥 본질크기라고 부르겠다... 인트린식컨텐트사이즈)

 

 

자 그럼 content hugging에 대한 오류부터 해결해보자.

 

 


 

Content Hugging

(크기에 대한 저항)

 

레이블 같은 뷰들은 기본 크기가 있다.

근데 기본 크기를 건드리는 제약조건을 걸게 되면 허깅 제약조건 오류가 발생한다.

 

발그림

 

위 그림과 같이 View 크기는 200인데 레이블 제약조건이 View 상하, 레이블 사이에만 걸려있다.

이럴 때 레이블들은 누가 커져야 하는지 감을 못 잡는다!

그래서 hugging 우선순위를 지정해달라고 스토리보드가 말하는 것이다.

 

우선순위는 250, 500, 750, 1000으로 사용하길 권장하며 

숫자가 작을수록 우선순위가 높다.

 

내가 위 레이블이 크고 아래 레이블이 작게 하고 싶으면,

위 레이블의 우선순위를 더 낮은 숫자로 설정하면 된다.

즉, 아래 레이블의 우선순위를 높은 숫자로 변경!

 

content Hugging Priority의 vertical 값을 500으로 변경했다.

그러면 원하는대로 우선순위 지정이 되고, 스토리보드에서 hugging 에러가 사라진다.

 

 

 

그럼 다음,

공부한 김에 아래에 있는 놈도 봐야겠다.

이름도 겁나 길다.

 

 

Content Compression Resistance Priority

(압축에 대한 저항)

 

첫번째 레이블의 라인 수를 0으로 주고

텍스트를 어마어마하게 넣었더니 이런 에러가 뜬다.

 

 

 

이건 이 뷰에 표시할 공간이 부족해서 뜬다.

이 경우에 어떤 레이블의 공간을 유지시킬 것인지 우선순위를 지정해줘야 한다.

 

나는 아래 레이블도 표시를 해줘야 하기 때문에!

윗 레이블의 우선순위를 아래보다 높은 숫자로 설정해줬다.

(따로 캡쳐는 안 하겠음)

 

 

 

결론, 제약조건은 2가지로 나뉜다

1. 어떤 뷰가 더 넓은 공간을 가지게 할 것인지? (Hugging)

2. 공간이 모자랄 때 어떤 뷰를 유지시킬 것인지? (Compression)

 

우선순위가 높으면 자신의 크기를 유지하고

우선순위가 낮으면 커진다.

 

요 두 가지를 잘 고민해서 오토레이아웃을 기깔나게 짜도록 하자.

 

 

 

 

댓글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
최근에 올라온 글