我写的东西比较简单,或者我想。
首先,代码,如果我的服务器没有返回任何结果,我试图将图像放在UICollectionView
的背景上。图像是200乘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];
但是,似乎什么也没做。
我错过了什么吗?
提前致谢!
答案 0 :(得分:2)
应该这样做:
myCollectionView.backgroundView = nil;
说明:您应该以与设置相同的方式取消设置UICollectionView的背景。您没有通过操纵视图层次结构来设置它,而是通过设置background
属性来设置它。您确实在上一行中调用了addSubview,但那是为您的背景视图添加子视图,而不是添加背景视图本身。
修改强>
这里有关于此UICollectionView错误的非常好的文章: http://blog.spacemanlabs.com/2013/11/uicollectionviews-backgroundview-property-is-horribly-broken/
作者提供的解决方案是将背景重置为空的不透明视图:
UIView *blankView = [UIView new];
blankView.backgroundColor = [UIColor whiteColor];
[myCollectionView.backgroundView removeFromSuperview];
myCollectionView.backgroundView = blankView;
此外,作者建议不要使用backgroundView
属性,而是自己动手:
坦率地说,我认为最好的解决方案就是一起忽略backgroundView属性。相反,使集合视图的背景清晰,并实现自己的backgroundView;只是在集合视图后面抛出一个视图。