2017-02-03 1 views
1

레이블 및 UITextView - detailsTextView가 포함 된 사용자 지정 셀 (자동 크기 조정)을 사용하여 UITableView를 성공적으로 만들었습니다.UITextView 셀의 최대 크기가있는 UITableView 자동 치수

detailsTextView의 스크롤이 비활성화되면 textView의 텍스트에 따라 셀의 크기가 올바르게 조정됩니다. 그러나 극도로 큰 셀을 가지고 셀의 최대 높이를 설정하고 싶지는 않습니다 (최대 셀 높이에 도달하면 세부 텍스트보기를 스크롤 할 수 있습니다).

어떻게하면됩니까? 세부 사항을 보려면 스크롤을 활성화 할 때 셀의 텍스트보기 자동 크기 조정은 0 높이 (IB의 최소 높이 제한에 의해 재정의 됨)로 축소되지만 여전히 계획 한 최대 셀 크기를 채우지 않습니다.

override func viewDidLoad() { 
    mainTableView.rowHeight = UITableViewAutomaticDimension 
    mainTableView.estimatedRowHeight = 200 
    self.mainTableView.register(UINib.init(nibName: EventCell.nibName, 
              bundle: Bundle.main), 
           forCellReuseIdentifier: EventCell.cellIdentifier) 
    ... 
} 

답변

1

아이디어가 간단합니다. textViewDidChange 방법에서 UITextView's 높이 변화를 추적해야합니다.

그런 다음 UITextView이 최대 사전 정의 된 높이를 초과하면 UITextView's 높이 증가를 제한하는 제한 조건을 추가 할 것입니다. 구속 조건은 최소 높이를 UITextView으로 미리 정의 된 최대 높이로 설정하고 UITextView에 대한 스크롤을 사용하도록 설정해야합니다.

+0

감사합니다 - 이것은 실제로 내 질문에 대한 답변이지만 다른 제안에 따르면 그것은 UX의 관점에서 나쁜 습관입니다. 나는 다른 것을 시도 할 것이다. 감사! – izik461

0

UI/UX 관점에서 나는 당신이하려는 것을하지 않을 것입니다. 다른 스크롤보기 (UITextview)가있는 Scrollview (UITableview)가 잘못되었습니다. "테이블"대신 작은 장치에서 "텍스트 상자"를 스크롤 할 수 있기 때문에 사용자를 혼동시킬 수 있습니다.

그러나이 솔루션 갈 수 : UITextView change height instead of scroll

또 다른 해결책은 0 높이 셀이 표시 될 때 어떻게되는지 확인하는 것입니다. 확인하십시오 viewWillLayoutSubviews() 및 IB의 제약.

희망이 있으면 해결책/답변에 한 걸음 더 다가 갈 수 있습니다.

0

자동 레이아웃 만 사용하는 경우 UITextView은 불행하게도 스크롤이 사용 중지 된 경우에만 자체 크기를 정의 할 수 있습니다.

재귀 적 레이아웃을 피하기 위해 노력해야합니다 (예 : 텍스트보기의 높이가 변경된 다음 더 많은 제약 조건을 설치하면 높이가 다시 바뀌는 등).

textview의 한도는 maximumNumberOfLines으로 제한하고 전체 텍스트를 볼 수있는 다른 방법을 제공합니다. 지적했듯이 다른 스크롤보기 내에서 스크롤보기를 사용하는 것은 매우 나쁜 UX 습관입니다.