ios - 无法更改 UICollectionView 上的 backgroundView 属性

标签 ios uicollectionview

我有一个 UICollectionView,我正在尝试根据 CollectionView 中是否有任何数据使用 backgroundView 属性设置背景图像。我有导航将更改数据,并重新加载 Collection View (调用 [self.collectionView reloadData])。出于某种原因,我得到了非常奇怪的结果。首先,有时当我设置属性时,它会出现在 collectionView 单元格的顶部并遮住它们。其次,当我尝试更改属性时,它不会在屏幕上更改。 这让我抓狂!实现起来似乎很简单!

所以在代码中。在 viewDidLoad 中为 UICollectionViewController

- (void)viewDidLoad {
[self loadSections];
[self setupBackgroundView;
}

Load sections 方法只加载我用于 Collection View 的数据,然后它还调用一个方法来设置背景 View ,该方法根据是否有任何数据来决定添加哪个 View ,如下所示:

- (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;
}
}

现在,当 View 首次加载时,如果没有数据,因此没有单元格来显示背景图像,则会正确显示。然后我更改数据,我现在有一些要显示的单元格,setupBackgroundImage 被调用,我可以验证 backgroundImage 属性是否设置为 nil(我什至在这里设置了断点并检查了值,它是 nil)。但是背景图像仍然可见。

此外,如果我将 nil 更改为另一张图片,则永远不会显示这张新图片。

更奇怪的是。如果我显示了一些单元格并设置了背景图像,则该图像会整齐地显示在单元格后面。如果我随后使用新数据集重新加载数据,则图像会显示在单元格前面,遮挡它们。我不知道这是怎么发生的,因为背景 View 应该落后于所有其他 View 。

谁知道为什么会这样。它是否被缓存在任何地方?还是我只是在做一些傻事?我在这里完全不知所措 - 花在这上面的时间比编写它使用的自定义布局还多!

最佳答案

试试这个

self.collectionView.backgroundView =[[UIView alloc]initWithFrame:self.collectionView.bounds]; 
UIImageView *imgVW=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TakePhoto"]];
[self.collectionView.backgroundView addSubView:imgVW];

关于ios - 无法更改 UICollectionView 上的 backgroundView 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604447/

相关文章:

ios - UICollectionView Header - 计算复杂 View 的大小

ios - 如何测量兆字节数据量?

ios - UICollectionView 没有名为 dequeueResuableCellWithReuseIdentifier 的成员

ios - 在自定义 UICollectionView 中出列时返回错误的单元格

Swift - UICollectionView 间距问题

ios - 尝试在 UICollectionViewCell 类上使用照片库

ios - Xcode 突然停止在硬件 : "Could not launch xxx.app: .. No such file.." 上运行项目

iphone - 通用应用的设备特定方向

ios - 更新到 iOS 8 使我的 SpriteKit 游戏变得 super 慢

iOS 打电话和传数据