2014-09-23 2 views
4

콘텐츠에 따라 셀 크기가 다른 컬렉션보기 기반 레이아웃이 있습니다. 일반 셀은 200x200 픽셀이지만 내용이 없으면 콜렉션 뷰 자체와 동일한 크기의 셀을 표시합니다.iOS7의 UICollectionViewCell 하위 클래스에서 제약 조건이 업데이트되지 않았습니다.

나는 올바른 크기를 계산

- (CGSize)collectionView:(UICollectionView *)collectionView 
        layout:(UICollectionViewLayout *)collectionViewLayout 
    sizeForItemAtIndexPath:(NSIndexPath *)indexPath 

를 사용합니다.

셀에 대한 내 하위 뷰는 제약 조건을 업데이트하지 않습니다. 셀은 정말로 단순합니다. 셀 슈퍼 뷰 내에 중심에 있어야하는 UILabel입니다. 나는 수평 및 수직 중심 구속 조건 (또한 각 모서리를 수퍼 뷰에 고정하려고 시도 함)을가집니다. 결과는 Interface Builder (Storyboard)에 입력 된 것과 동일한 크기와 위치를 가져옵니다.

셀과 레이블 모두에 배경색을 설정했는데 셀이 올바른 크기로 표시되지만 레이블에는 표시되지 않습니다.

문제는 iOS7에만 존재하며 iOS8에서와 같이 작동합니다.

도와주세요! screenshot

+0

이 흥미로운 질문이다. 그런데 최근에 유사한 문제가 발생했지만 반대의 경우가 발생했습니다. 콜렉션 뷰 셀 내부의 하위 뷰는 부모 뷰가 iOS7에서 크기가 조정 된 후 해당 제약 조건에 올바르게 정렬되었습니다. 그러나 iOS8에서는 발생하지 않았습니다. 후자의 경우 walkaround iOS8 문제를 해결하기 위해 -layoutSubiews 메서드를 사용했습니다. 두 개의 iOS 버전에서 동일한 문제가 다르게 발생하는 것은 궁금합니다. 나는 아직 답을 모른다. 그걸 파헤칠 시간이 없다 ... 나는 iOS8 업데이트를 빨리 풀어 줘야했다! – viggio24

+0

Xcode 6에서 iOS8 프로젝트로 프로젝트를 시작한 후 기본 대상 버전을 낮췄습니다. 어쩌면이 동작은 프로젝트가 생성 된 버전에 달려 있습니다. –

+0

프로젝트의 -layoutSubviews에서 어떻게 수정 했습니까? –

답변

11

당신에게 Stackover 흐름 관련 질문 창을 주셔서 감사합니다! 이 스레드를 발견하고 내 문제를 해결했습니다.

Auto Layout in UICollectionViewCell not working

나는 나의 UICollectionViewCell 서브 클래스에 넣고 :

- (void)setBounds:(CGRect)bounds { 
    [super setBounds:bounds]; 
    self.contentView.frame = bounds; 
} 
+0

셀 뒤의 레이블을 사용합니다. 이 newSize = cell.contentView에 의해 셀 높이를 계산합니다 systemLayoutSizeFittingSize : UILayoutFittingCompressedSize]; –

4

나에게이 문제는 그냥 awakeFromNib()에게 전화를 UICollectionViewCellautoresizingMask을 설정 빠른 2.와 IOS9에 올 때.

내 UICollectionViewCell는 this-과 같습니다

override func awakeFromNib() { 
    self.contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth , UIViewAutoresizing.FlexibleHeight] 
} 
관련 문제