2014-04-29 2 views
0

UITextView의 내용을 자동으로 크기 조정하고 싶습니다.iOS 7 자동 크기 조정 UITextView와 AutoLayout이 임의로 줄 바꿈

는 자동 레이아웃이 매우 간단하다 : 내보기로 UITextView를 추가, 왼쪽 상단 모서리에있는 UITextView를 고정하는 두 개의 제약 조건을 설정 스크롤하지 않도록 설정하고 그것 뿐이다.

IB setup

예상되는 동작은 녹색 텍스트 뷰는 프레임 내가 문자를 입력 할 때마다 크기를 조정할 수 있다는 것입니다. 그러나 이것은 부분적으로 만 작동합니다 : 난

Examples of text rendering in a UITextView

: 일부 텍스트, 텍스트 뷰는 단지 현재 행의 끝에서 새로운 캐릭터를 추가하는 대신,이 두 개의 라인을 통해 그것을 렌더링 할 것을 결정 이 추측은 새로운 TextKit 프레임 워크와 관련이 있으며 NSLayoutManagerNSTextContainer의 속성을 사용하여이 동작을 제어하려고했지만 아무 소용이 없습니다.

텍스트보기의 너비 (예 : 너비 컨투어)를 "하드 코드"하면 문자가 줄 끝 부분에 제대로 추가되지만 텍스트의 가로 자동 ​​크기 조정 속성이 손실된다는 점에 유의하십시오 전망.

UITextView에 줄 바꿈을 원하지 않는다고 어떻게 나타낼 수 있습니까?

편집는 : further testing 후, 버그는 32 비트의 아치에 나타날 것으로 보인다.

+0

해결 방법을 찾으셨습니까? 아래 @danhopwood의 제안을 살펴 봤지만 아무런 차이가 없었습니다. – Trey

+0

TBH,이 버그를 제쳐 놓고 계속 전진했습니다 (모든 사용자가 64 비트 장치를 실행한다는 것을 알고 있습니다). 바라건대 iOS 8에서 수정되었습니다 ... –

+0

좋아. UITextView를 UILabel 대체품으로 사용하기 때문에 문자열의 시작과 끝 부분에 공백 문자를 추가하는 것으로 끝납니다. 잘 작동하는 것 같습니다 ... – Trey

답변

0

이 도움이 그래서 희망을 나에게 짜증 이제 iOS 8에서 수정되었습니다 (Xcode 6.0.1 (6A317)).

1

해킹의 비트 (그리고 iOS8의 고정있어 희망)하지만 다음과 같은 일이 일어나고에서 중지 :

- (void)textViewDidChange:(UITextView *)textView { 

    // uber hack to stop characters from jumping to the line below 
    if (textView.text.length == 1 && ![textView.text isEqualToString:@" "]) { 
     NSRange cursorPosition = [textView selectedRange]; 
     textView.text = [NSString stringWithFormat:@"%@ ", textView.text]; 
     textView.selectedRange = cursorPosition; 
    } 

    [textView invalidateIntrinsicContentSize]; 
} 

잠시 동안 다른 사람 :