2013-08-08 6 views
2

동적 높이가있는 셀로 컬렉션보기를 구현하려고합니다.UICollectionViewCell UITextView 글꼴에 따른 동적 높이 lineHeight

수집 뷰 셀의 일부 UITextView 포함은 UITextViews 그들의 높이 이렇게 구성한 :

[textViewHeightConstraint setConstant: numberOfRowsToDisplay * [[textView font] lineHeight]]; 

텍스트 뷰 특정 .xib에있는 다른보기의 하위 뷰이 XIB도이다 셀이 대기열에서 제외 될 때 (collectionView : cellForItemAtIndexPath :가 호출 될 때) 셀의 하위보기로 추가됩니다.

하지만 "collectionView : sizeForItemAtIndexPath :"메서드에서 셀 인스턴스에 액세스 할 수없는 셀 높이를 반환해야하므로 textview : [textView font] lineHeight 속성에 액세스 할 수 없습니다.

어떻게 해결할 수 있습니까?

추신 : textview는 비어 있으므로 높이가 NSWString에 종속되지 않으며 sizeWithFont : 메서드를 호출 할 수 있으며 텍스트 뷰 높이를 하드 코딩 할 수 없습니다. "numberOfRowsToDisplay"는 런타임에 검색되며 textView 글꼴도 하드 코드되지 않습니다.

편집 : 이미 호출하려고 "forIndexPath : dequeueReusableCellWithReuseIdentifier"에서 "collectionView : sizeForItemAtIndexPath"나는 호출 것처럼있어서, 그것은 무한 루프를 생성 "cellForItemAtIndexPath : collectionView를".

+0

셀에 액세스하려고하면 안됩니다. 특정 indexPath에 대한 numberOfRowsToDisplay 값에 대한 데이터 소스를 쿼리해야합니다. 셀은 데이터를 표시하기위한 것이지 공급을위한 것이 아닙니다. – rdelmar

+0

네,'UITableView'로 할 수있는 것처럼 높이 계산을 위해 임의로 셀을 큐에서 제거 할 수 없습니다. 매우 짜증나. –

+0

@rdelmar 그것은 검색하기 어려운 "numberOfRowsToDisplay"가 아니며, textView의 lineHeight이고 textView는 셀에 있으므로 글꼴 속성에 액세스 할 수 없습니다. – LiohAu

답변

-1

흐름 컨트롤러 클래스의 위임자로보기 컨트롤러를 설정해야합니다.

여기를 참조하십시오. UICollectionViewDelegateFlowLayout Protocol Reference

+1

View Controller는 이미 레이아웃 클래스의 위임자입니다. 문제는 셀의 높이를 알기 위해 셀 인스턴스가 필요하다는 것입니다. 시스템에서 셀을 만들려면 높이가 필요합니다. = 악순환 – LiohAu

관련 문제