티스토리 뷰

내용 텍스트의 길이에 맞추어 높이가 자동으로 조절되는 뷰를 만들기 위해
uilabel dynamic height 의 검색어로 거의 하루종일 구글링 해가며 씨름했지만

https://gist.github.com/danielphillips/1005520
http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/
http://www.samrayner.com/posts/dynamic-tableview-cells/
위 주소들에 보이는 등의 코드들을 아무리 써봐도 높이 조절이 되지 않았다.
(결론적으로, 저 코드들만 놓고 보자면 옳다. 현재 iOS에선 deprecated 된 부분들만 치환한다면...)

저런 올바른 코드들이 먹히지 않았던 이유는
밤 11시가 넘어서야 겨우 찾아내게 되었다.

http://stackoverflow.com/questions/12387448/setframe-of-uilabel-property-of-xib-doesnt-work

Storyboard 또는 xib의 뷰를 클릭하고
File Inspecter (알트+커맨드 + 1)활성시키고
스크롤 중간쯤의 Interface Builder Document 섹션을 보면
[v] Use AutoLayout
이란 넘이 있다.

일단은 저 체크를 해제하고
자동 높이 조절 코드가 들어간 프로젝트를 실행시키면
아쥬~ 잘 동작하는것을 볼 수 있다.

허나, iOS6 이상에 추가된 AutoLayout 기능은 괜히추가된 기능이 아니다.

레이웬더리치의 오토 레이아웃 튜토리얼(새창)을 보면
골치아픈 레이아웃 문제들에 대한 편의를 제공해준다는것을 알 수 있다.

그러면 좀 전에 체크 해제한
[ ] Use AutoLayout
을 다시 체크하도록 하고

AutoLayout을 통해서의 자동 높이조절 해결법을 보겠다.

http://stackoverflow.com/a/16009707
위 링크의 글을 잘 보고난 뒤

http://stackoverflow.com/a/18049684
를 따라해보면 AutoLayout 에서도 자동 높이가 잘 작동한다.

과정을 보자면,
스토리보드나 xib을 클릭하여 
인터페이스 빌더에서
자동 높이조절을 원하는 뷰
- 여기서는 UILabel *tmpLabel 을 그리 한다고 가정 - 를
클릭하고

링크의 글에서 보이는 하단 (아이콘들이 있는) 컨트롤바의 아이콘 중
ㅏ+ㅓ 를 클릭하면 나타나는
 Add New Constrains 팝업뷰에서
[v] Height 체크하고
제일 아래의 [Add 1 Constrains] 버튼 클릭

Interface Builder 왼쪽 해당 Lable에 계층적으로
Constrains가 추가된것을 확인 할 수 있는데
아까 추가한 그 하위 항목을 클릭하고

Size Inspector 활성화 후 (단축키 alt + CMD + 4) 
Relation : Greater Than or Equal 로 바꿔주고
프로젝트를 다시 실행해보면

이제, AutoLayout 상에서 자동 높이 조절이 잘 동작한다.

남은 일은 AutoLayout을 제대로 적용하기 위해서
뷰들에게 Constrains(제약조건들)를 추가해주는 것이다.

http://www.raywenderlich.com/ko/page/3 (한글)
http://blogios.stack3.net/archives/category/tutorial (일본어 - Use browser's 번역 extension)
위 링크 페이지의 목록 중 '오토 레이아웃' 관련 강좌들을 보면 많은 도움이 될 것이다.

댓글