UFO ET IT

UITextView 콘텐츠 삽입

ufoet 2020. 12. 13. 10:02
반응형

UITextView 콘텐츠 삽입


contentInsets에 약간 이상한 것이 있습니다.

uitextview에 패딩을 추가하려고하므로 contentInset이 50 인 UITextView가 스토리 보드에 있습니다.

그러나이 테스트에서 아래와 같이 스크롤바가 uitextview의 맨 아래에 나타납니다.여기에 이미지 설명 입력

나는 contentInset이 수평 스크롤 바를 일으키지 않고 uitextview를 스쿼시한다는 인상을 받았습니다. 그래서 수평 스크롤바의 필요성을 제거하고 uitextview의 삽입 및 모든 텍스트를 필요없이 보이게 만들 수있는 방법은 무엇입니까? 스크롤 바.

NB : 가로로 스크롤하는 것을 방지하거나 스크롤바를 표시하지 않는 것에 대해 묻지 않습니다 (따라서 텍스트가 잘림).

감사합니다!

atomk (UITextView는 ss라고 함)

NSLog(@"Content Size Before %f",self.ss.contentSize.width); Logs: 280
CGSize size=self.ss.contentSize; size.width=size.width-50;
[self.ss setContentSize:size]; 
NSLog(@"Content Size After %f",self.ss.contentSize.width); Logs: 230

코드가 추가 된 뷰가 추가되기 전과 눈에 띄는 차이 없으므로 문제가 발생합니다! (감사)


업데이트 :이 솔루션은 iOS 7에서 구식입니다.

아래 답변을 참조하십시오 . iOS 7.0에서는의 textContainerInset속성 UITextView이 도입되었습니다.

textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);

iOS 7 이전 솔루션 :

나는 contentInset 이이 수평 스크롤 막대를 일으키지 않고 uitextview를 스쿼시한다는 인상을 받았습니다 ...

나는이 방법 아니다 두려워 contentInset와 함께 작동합니다 UITextView. 다음과 같은 내용은 Apple의 설명서참조하십시오 contentInset.

둘러싼 스크롤보기에서 콘텐츠보기가 삽입 된 거리 ... 콘텐츠 주변의 스크롤 영역에 추가하려면이 속성을 사용합니다.

contentInset되는 추가 내용 주위에.


위에 포함 된 코드를 사용 하여 contentSizein viewDidLayoutSubviews변경할 수 있습니다 .

- (void)viewDidLayoutSubviews
{
    self.textView.contentInset = UIEdgeInsetsMake(0, 50, 0, 0);

    NSLog(@"Content Size Before %f",self.textView.contentSize.width); //Logs: 280
    CGSize size=self.textView.contentSize;
    size.width=size.width-50;
    [self.textView setContentSize:size];
    NSLog(@"Content Size After %f",self.textView.contentSize.width); //Logs: 230
}

그러나 이로 인해 오른쪽에서 텍스트가 잘립니다.

UITextView가 오른쪽에서 잘림


내가 가로 패딩의 모양을 얻을 수 있었던 가장 좋은 방법 UITextView은 컨테이너 안에 배치하는 것 UIView입니다. 귀하의 경우에는 UIView현재 텍스트보기와 동일한 크기를 만들고 컨테이너보기 내에 50px 더 좁은 텍스트보기를 추가하기 만하면 됩니다.

이 해결 방법은 텍스트보기에 대한 배경이있는 경우 문제를 일으킬 수 있지만 위의 스크린 샷에서는 문제가되지 않는 것 같습니다.

UITextView(빨간색 프레임) UIView컨테이너 내부 :

컨테이너 UIView 내부의 UITextView

UITextView배경이있는 경우 다음을 참조하십시오.

도움이 되었기를 바라며 누구든지 더 나은 솔루션을 찾을 수 있다면 그것에 대해 듣고 싶습니다!


iOS 7에서는 UITextViewTextKit을 기반으로하며 새로운 속성이 textContainerInset있습니다. 예상대로 작동합니다.

UITextView *textView = ...;
// Left inset of 50 points
textView.textContainerInset = UIEdgeInsetsMake(0.0, 50.0, 0.0, 0.0);

참고 URL : https://stackoverflow.com/questions/18560412/uitextview-content-inset

반응형