将顶部 header 添加到已经包含 header 部分的 UICollectionview
Adding a top header to UICollectionview that already has sections with headers
假设我有一个包含部分和项目的 UICollectionview。
对于每个部分,我都会生成一个 header 作为下面的代码。
问题:如何将顶部 header 视图添加到 collectionView 本身
这与下面 header 演示的部分不同(使用 objective-c、IB、自动布局)
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader) {
HeaderCollectionReusableView *headerView = [self.collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:indexPath];
headerView.label1.text = "This is a section title";
reusableview = headerView;
}
return reusableview;
}
使用当前 header 视图和一个视图中的顶部 header 视图为第一部分生成另一个 header。不要忘记在第一部分 collectionView:layout:referenceSizeForHeaderInSection:
中 return 更大的尺寸。
我会做这些步骤来完成它:
在故事板中,创建一个 UIView 并根据需要设计它的子视图。请确保您选中了刚刚创建的 UIView 的 clipToBounds
复选框。
创建您的约束。我猜它应该是顶部 0、左侧 0、右侧 0,当然还有高度 0(因为这是你提到的初始状态)。
为高度约束创建 IBOutlet 并将其连接到您刚刚创建的高度约束。我们称它为 viewHeaderHeightConstraint
.
当您要显示此视图时:
self.viewHeaderHeightConstraint.constant = 50; // Or any other value
[self.view layoutIfNeeded];
如果你想动画高度变化:
self.viewHeaderHeightConstraint.constant = 50; // Or any other value
[UIView animateWithDuration:0.3 animations:^{
[self.view layoutIfNeeded];
} completion:^(BOOL finished) {
// Do something after completion
}];
假设我有一个包含部分和项目的 UICollectionview。 对于每个部分,我都会生成一个 header 作为下面的代码。
问题:如何将顶部 header 视图添加到 collectionView 本身 这与下面 header 演示的部分不同(使用 objective-c、IB、自动布局)
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader) {
HeaderCollectionReusableView *headerView = [self.collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:indexPath];
headerView.label1.text = "This is a section title";
reusableview = headerView;
}
return reusableview;
}
使用当前 header 视图和一个视图中的顶部 header 视图为第一部分生成另一个 header。不要忘记在第一部分 collectionView:layout:referenceSizeForHeaderInSection:
中 return 更大的尺寸。
我会做这些步骤来完成它:
在故事板中,创建一个 UIView 并根据需要设计它的子视图。请确保您选中了刚刚创建的 UIView 的
clipToBounds
复选框。创建您的约束。我猜它应该是顶部 0、左侧 0、右侧 0,当然还有高度 0(因为这是你提到的初始状态)。
为高度约束创建 IBOutlet 并将其连接到您刚刚创建的高度约束。我们称它为
viewHeaderHeightConstraint
.当您要显示此视图时:
self.viewHeaderHeightConstraint.constant = 50; // Or any other value [self.view layoutIfNeeded];
如果你想动画高度变化:
self.viewHeaderHeightConstraint.constant = 50; // Or any other value [UIView animateWithDuration:0.3 animations:^{ [self.view layoutIfNeeded]; } completion:^(BOOL finished) { // Do something after completion }];