在 UICollectionViewFlowLayout 中展开单元格时出现问题
Problems spreading out cells in UICollectionViewFlowLayout
我目前正在尝试 space 在具有动态大小的单元格的 UICollectionViewFlowLayout 中输出一些自定义单元格。我发现单元格之间的间距不一致。我一直在阅读布局,我已经实现了所有委托方法来控制最小尺寸,但这些似乎没有效果。这是现在的景色
这是我的尺码代码:
在布局和视图委托中:
- (CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 5;
}
- (CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
return 5;
}
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
Tag *tag = [[Search sharedManager] tagAtIndexPath:indexPath];
NSString *labelText = tag[@"Name"];
CGSize labelTextSize = [labelText sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:8.0f]}];
return labelTextSize;
}
自定义单元格
@implementation TagCellCollectionViewCell
- (id) initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.tagBtn.titleLabel.font = [UIFont systemFontOfSize:8.0f];
self.tagBtn = [UIButton buttonWithType:UIButtonTypeCustom];
// self.tagBtn.frame = CGRectMake(-frame.size.width/4+20, -frame.size.width/4+5, frame.size.width, frame.size.height);
[[self.tagBtn layer] setBorderColor:[[UIColor colorWithRed:234.0f/255.0f green:99.0f/255.0f blue:74.0f/255.0f alpha:1.0f] CGColor]];
[[self.tagBtn layer] setBorderWidth:1.0f];
self.tagBtn.backgroundColor = [UIColor whiteColor];
[self.tagBtn setTitleColor:[UIColor colorWithRed:234.0f/255.0f green:99.0f/255.0f blue:74.0f/255.0f alpha:1.0f] forState:UIControlStateNormal];
[self.contentView addSubview:self.tagBtn];
}
return self;
}
@end
我在这里缺少什么,可以在每个单元格之间放置一致数量的 space?
这里的问题是从
返回的项目
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
与 minimumInterimSpacing 值重叠。因为我在寻找 systemfontofsize = 8 的东西,所以我需要确保我的中间间距超过该值。将其设置为我上面的 5 导致它以奇怪的方式发生冲突,将其设置为 15 将单元格均匀隔开,因为单元格之间的像素数大于计算的大小。
我目前正在尝试 space 在具有动态大小的单元格的 UICollectionViewFlowLayout 中输出一些自定义单元格。我发现单元格之间的间距不一致。我一直在阅读布局,我已经实现了所有委托方法来控制最小尺寸,但这些似乎没有效果。这是现在的景色
这是我的尺码代码:
在布局和视图委托中:
- (CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 5;
}
- (CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
return 5;
}
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
Tag *tag = [[Search sharedManager] tagAtIndexPath:indexPath];
NSString *labelText = tag[@"Name"];
CGSize labelTextSize = [labelText sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:8.0f]}];
return labelTextSize;
}
自定义单元格
@implementation TagCellCollectionViewCell
- (id) initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.tagBtn.titleLabel.font = [UIFont systemFontOfSize:8.0f];
self.tagBtn = [UIButton buttonWithType:UIButtonTypeCustom];
// self.tagBtn.frame = CGRectMake(-frame.size.width/4+20, -frame.size.width/4+5, frame.size.width, frame.size.height);
[[self.tagBtn layer] setBorderColor:[[UIColor colorWithRed:234.0f/255.0f green:99.0f/255.0f blue:74.0f/255.0f alpha:1.0f] CGColor]];
[[self.tagBtn layer] setBorderWidth:1.0f];
self.tagBtn.backgroundColor = [UIColor whiteColor];
[self.tagBtn setTitleColor:[UIColor colorWithRed:234.0f/255.0f green:99.0f/255.0f blue:74.0f/255.0f alpha:1.0f] forState:UIControlStateNormal];
[self.contentView addSubview:self.tagBtn];
}
return self;
}
@end
我在这里缺少什么,可以在每个单元格之间放置一致数量的 space?
这里的问题是从
返回的项目- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
与 minimumInterimSpacing 值重叠。因为我在寻找 systemfontofsize = 8 的东西,所以我需要确保我的中间间距超过该值。将其设置为我上面的 5 导致它以奇怪的方式发生冲突,将其设置为 15 将单元格均匀隔开,因为单元格之间的像素数大于计算的大小。