我有一个UICollectionView
,我正在尝试根据 CollectionView 中是否有任何数据使用 backgroundView 属性设置背景图像。我有导航,它将更改数据,并重新加载集合视图(调用[self.collectionView reloadData]
)。出于某种原因,我得到了非常奇怪的结果。首先,有时当我设置属性时,它会出现在 collectionView 单元格的顶部并遮住它们。其次,当我尝试更改属性时,它不会在屏幕上更改。这让我发疯了!实现起来似乎很简单!
所以在代码中。在viewDidLoad
为UICollectionViewController
- (void)viewDidLoad {
[self loadSections];
[self setupBackgroundView;
}
加载部分方法只是加载我用于集合视图的数据,然后它还调用一个方法来设置背景视图,该背景视图根据是否有任何数据来决定要添加的视图,如下所示:
- (void)loadSections {
[self loadPictures];
[self setupBackgroundImage];
}
- (void)setupBackgroundImage {
if ([self.sections count] == 0 || !self.sections) {
self.collectionView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TakePhoto"]];
}
else {
self.collectionView.backgroundView = nil;
}
}
现在,当视图首次加载时,如果没有数据,因此没有单元格显示背景图像正确出现。然后我更改数据,现在我有一些单元格要显示,setupBackgroundImage 被调用,我可以验证 backgroundImage 属性是否设置为 nil(我什至在此处设置断点并检查值,它是 nil)。但是背景图像仍然可见。
此外,如果我将 nil 更改为另一个图像,则永远不会显示此新图像。
更奇怪的是。如果我显示了一些单元格并设置了背景图像,则该图像会整齐地显示在单元格后面。如果我随后使用新数据集重新加载数据,则图像会显示在单元格前面,使它们变得模糊。我不知道这是怎么发生的,因为背景视图应该在所有其他视图之后。
有谁知道为什么会这样。它是否被缓存在任何地方?还是我只是在做一些傻事?我在这里完全不知所措-在这上面花费的时间比编写它使用的自定义布局还要多!