gpt4 book ai didi

ios - 如果部分标题隐藏在 UICollectionView 中,则删除空白区域

转载 作者:IT王子 更新时间:2023-10-29 07:40:21 28 4
gpt4 key购买 nike

我在 UICollectionView 中有两个部分。我只想在 UICollectionView 中为第一部分显示一个部分标题。不在第 0 节。

所以我尝试在 viewForSupplementaryElementOfKind 中返回 nil:section == 0 的方法并返回 section == 的 View 1

它崩溃并显示以下错误:

Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes]:

这是我的补充 View 代码。

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *sectionHeader = nil;
if (kind == UICollectionElementKindSectionHeader && indexPath.section == 1) {
sectionHeader = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"EventSectionHeader" forIndexPath:indexPath];
sectionHeader.layer.borderWidth = .5f;
sectionHeader.layer.borderColor = [UIColor colorWithRed:221.0 / 255.0 green:223.0 / 255.0 blue:220.0 / 255.0 alpha:1.0].CGColor;
}

return sectionHeader;
}

我发现在 viewForSupplementaryElementOfKind: 方法中返回 nil 也会让其他人崩溃。建议删除该方法的其他答案。

但我只想显示特定部分的部分标题。如何实现只有一个部分的返回 View ?谢谢。任何帮助将不胜感激。

编辑:

正如@san 所说,我已经更新了代码以隐藏节标题。有用。它隐藏了标题。但我仍然看到节标题处的空白区域。预期结果是如果节标题被隐藏,则不应有空间。

更新代码:

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{

UICollectionReusableView *sectionHeader = nil;
if (kind == UICollectionElementKindSectionHeader) {
sectionHeader = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"EventSectionHeader" forIndexPath:indexPath];
sectionHeader.layer.borderWidth = .5f;
sectionHeader.layer.borderColor = [UIColor colorWithRed:221.0 / 255.0 green:223.0 / 255.0 blue:220.0 / 255.0 alpha:1.0].CGColor;
if (indexPath.section == 0) {
sectionHeader.hidden = YES;

}else {
sectionHeader.hidden = NO;
}
}

return sectionHeader;
}

我什至尝试像@san 所说的那样为 sectionHeader 设置框架。但没有运气。同样的结果。

最佳答案

终于,我找到了问题的答案。我错过了什么。无论如何,对其他用户感到抱歉。

到目前为止,我在下面的方法中设置了标题的高度和宽度,就像@san 所说的那样。

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

但是设置补充 View 的框架大小并不是正确的方法。后来我在flowLayout里面找到了另一个方法,可以帮我设置页眉和页脚的大小。

这对我来说真的很管用:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return CGSizeZero;
}else {
return CGSizeMake(CGRectGetWidth(collectionView.bounds), 135);
}
}

更新:由于有人质疑我的评论技巧,附上苹果Documentation link用于在上述方法中返回 CGSizeZero。

关于ios - 如果部分标题隐藏在 UICollectionView 中,则删除空白区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042900/

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