iOS7 에서 UITextView 내의 padding 값을 제거하는 법
참고 :
http://stackoverflow.com/questions/746670/how-to-lose-margin-padding-in-uitextview
정리하면, UITextView 의 하위속성인
textContainer.lineFragmentPadding = 0;
으로, 더불어 다른 한 속성인
textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);
로 한다.
첫 번째 것을 하면 좌우 패딩이 사라지고, 두 번째를 하면 비로소 상하가 없어진다.
유의점!
- 제목에도 적었지만, iOS7 만 된다. 위 두 속성 자체가 iOS7 부터 나온 물건.
- 혹시 boundingRectWithSize 함수를 사용해 얻은 크기와 텍스트 박스간의 차이를 없애기 위해 이 방법을 찾은 것이라면, 현재 이 함수가 마지막 라인에 linefeed 만 있을 경우 제대로 크기를 구하지 못한다는 점에 유의할 것!
- 주로 이 기법이 필요한 이유는 텍스트가 차지하는 영역만큼 컨테이너를 확장하는 동적 레이아웃이 필요한 경우에 사용할텐데 (예를 들면 multiline text 가 리스트의 항목으로 존재하는 테이블) 이러한 문제가 있으므로 주의.
- iOS6 에서는 일반적으로는 contentInset 을 (-8, -8, -8, -8) 로 설정하는 방법을 사용한다. 그 외에 변태적인 방법으로는 UITextView 를 UIView 안에 넣고 UITextView 의 영역을 UIView 의 boundary 바깥으로 넓여서 padding 을 일부러 잘라 표시하는 방법이 있다. 이 기법의 장점은 제대로 깔끔하게 나온다는 점이고, 단점은 2-1과 같은 동적 레이아웃 적용이 매우 까다롭다는 점이다.
반응형