我正在写一些相对简单的东西,或者我是这么想的。
首先是代码,如果我的服务器没有返回结果,我会尝试将图像放在 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];
但是,它似乎什么也没做。
我错过了什么吗?
提前致谢!
最佳答案
应该这样来代替:
myCollectionView.backgroundView = nil;
说明:您应该以与设置它相同的方式取消设置 UICollectionView 的背景。您不是通过操作 View 层次结构来设置它,而是通过设置 background
属性来设置它。您确实在上一行中调用了 addSubview,但那是将 subview 添加到背景 View ,而不是添加背景 View 本身。
编辑:
这里有一篇关于此 UICollectionView 错误的非常好的文章: http://blog.spacemanlabs.com/2013/11/uicollectionviews-backgroundview-property-is-horribly-broken/
作者给出的解决方案是将背景重置为空的不透明 View :
UIView *blankView = [UIView new];
blankView.backgroundColor = [UIColor whiteColor];
[myCollectionView.backgroundView removeFromSuperview];
myCollectionView.backgroundView = blankView;
此外,作者建议完全不要使用 backgroundView
属性,而应该自己使用:
Frankly, I think the best solution is to just ignore the backgroundView property all together. Instead, make the collection view’s background clear, and implement your own backgroundView; just throw a view behind the collection view.
关于ios - UICollectionView.backgroundView 坏了吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23059811/