2014-04-14 5 views
3

나는 비교적 단순한 무언가를 쓰고 있습니다.UICollectionView.backgroundView가 깨졌습니다.

첫째, 내 서버에서 결과가 반환되지 않으면 먼저 UICollectionView의 배경에 이미지를 배치하려고하는 코드입니다. 이미지는 200 x 200입니다.

UIView *myView = [[UIView alloc] initWithFrame:self.view.bounds]; 
CGRect myViewSpace = self.view.bounds; 
CGFloat myX = (myViewSpace.size.width /2.0) - 100; 
CGFloat myY = (myViewSpace.size.height /2.0) - 100; 
UIImageView *imView = [[UIImageView alloc] initWithFrame:CGRectMake(myX, myY, 200, 200)]; 
imView.image = [UIImage imageNamed:@"imNotHome"]; 
[myView addSubview:imView]; 
myCollectionView.backgroundView = myView; 

결과가 나오면이를 제거 할 수 있습니다.

나는 내가 UICollectionView를 다시로드 전에, 다음을 배치하는 것처럼 간단 할 거라고 생각 :

[myCollectionView.backgroundView removeFromSuperview]; 

그러나, 그것은 아무것도하지 않고있는 것으로 보인다.

내가 누락 된 항목이 있습니까?

미리 감사드립니다.

답변

2

이 방법 대신 수행해야합니다 :

myCollectionView.backgroundView = nil; 

설명 : 당신이 그것을 설정 한 것과 동일한 방법으로 UICollectionView의 배경 설정을 해제해야합니다. 뷰 계층 구조를 조작하여 설정하지는 않았지만 background 특성을 설정하십시오. 이전 줄에서 addSubview를 호출했지만 배경 뷰 자체를 추가하는 것이 아니라 하위 뷰를 배경 뷰에 추가하는 것이 었습니다.

편집 :

UIView *blankView = [UIView new]; 
blankView.backgroundColor = [UIColor whiteColor]; 
[myCollectionView.backgroundView removeFromSuperview]; 
myCollectionView.backgroundView = blankView; 
: 저자가 제공 http://blog.spacemanlabs.com/2013/11/uicollectionviews-backgroundview-property-is-horribly-broken/

이 솔루션은 빈 불투명보기로 배경을 다시 설정하는 것입니다 : 여기 UICollectionView의 버그에 대한 아주 좋은 기사가있다

또한 저자는 backgroundView 속성을 사용하지 말고 직접하는 것이 좋습니다 (

).

솔직히 말해서 가장 좋은 해결책은 backgroundView 속성을 모두 무시하는 것입니다. 대신 컬렉션 뷰의 배경을 선명하게 만들고 자신 만의 backgroundView를 구현하십시오. 콜렉션 뷰 뒤에 뷰를 던지십시오.

+0

슬프게도 아무런 효과가 없었습니다. 배경은 여전히 ​​눈에.니다. – Darren

+0

내 편집을 참조하십시오. UICollectionView에서이 문제를 인식하지 못했습니다. – Clafou

+0

미안하지만, 나 자신에게 가르치는 일종의 중급 사용자이다. 'backgroundView'에 대한 문서를 읽을 때,보기를 제공한다고 말합니다. 나머지는 당신을 위해 일합니다. 뷰를'backgroundView'에 추가하고,'UICollectionView'가 자동으로 뷰를 추가해야했습니다. 나는 이제 'nil'과 동일하게 설정하고 새롭고 비어있는 UIView를 제공했지만 여전히 아무것도 제공하지 않습니다. 그 견해는 거기서 아주 완고하게 남아 있습니다. – Darren