gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:14:58 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com