Ios UICollectionView.backgroundView是否已损坏

Ios UICollectionView.backgroundView是否已损坏,ios,objective-c,uicollectionview,Ios,Objective C,Uicollectionview,我在写一些相对简单的东西,至少我是这么想的 首先是代码,如果我的服务器没有返回任何结果,我将尝试在UICollectionView的背景上放置一个图像。图像是200乘200: UIView *myView = [[UIView alloc] initWithFrame:self.view.bounds]; CGRect myViewSpace = self.view.bounds; CGFloat myX = (myViewSpace.size.width /2.0) - 100; CGFloa

我在写一些相对简单的东西,至少我是这么想的

首先是代码,如果我的服务器没有返回任何结果,我将尝试在
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];
然而,它似乎什么也没做

我错过什么了吗


提前谢谢

应该这样做:

myCollectionView.backgroundView = nil;
说明:您应该以设置UICollectionView的相同方式取消设置其背景。您没有通过操纵视图层次结构来设置它,而是通过设置
background
属性来设置它。您在前一行中确实调用了addSubview,但这是将子视图添加到背景视图,而不是添加背景视图本身

编辑:

这里有一篇关于此UICollectionView错误的非常好的文章:

作者给出的解决方案是将背景重置为空的不透明视图:

UIView *blankView = [UIView new];
blankView.backgroundColor = [UIColor whiteColor];
[myCollectionView.backgroundView removeFromSuperview];
myCollectionView.backgroundView = blankView;
此外,作者建议不要使用
backgroundView
属性,而是自己使用:

坦率地说,我认为最好的解决方案是忽略所有背景视图属性。相反,让集合视图的背景清晰,并实现您自己的背景视图;只需在集合视图后面抛出一个视图


可悲的是,这也没有任何效果。背景仍然清晰可见。请查看我的编辑。我没有意识到UICollectionView的这个问题,恶心!抱歉,但这对我来说没有多大意义(有点像是一个自学的中级用户)。在阅读
backgroundView
的文档时,它表示您为其提供了一个视图。剩下的就交给你了。我需要将视图添加到
backgroundView
,然后
UICollectionView
自动添加它。我现在已经将它设置为'nil',甚至提供了一个新的、空的
UIView
,但仍然是空的。那里的景色仍然很顽固,这很管用!但事实上。。。讨厌。。。谢谢你的编辑!我们同时在互相打字。非常欢迎!酷!在UIKit中发现如此愚蠢的bug真是令人惊讶!请注意作者在该页面中的建议:“坦率地说,我认为最好的解决方案是完全忽略backgroundView属性。相反,让集合视图的背景清晰,并实现您自己的backgroundView;只需在集合视图后面抛出一个视图。”