kingjiajie / JJCollectionViewRoundFlowLayout

JJCollectionViewRoundFlowLayout可设置CollectionView的BackgroundColor、Cell的对齐方式,可跟据用户Cell个数计算背景图尺寸,可自定义是否包括计算CollectionViewHeaderView、CollectionViewFootererView或只计算Cells。设置简单,可自定义背景颜色偏移,设置显示方向(竖向、横向)显示,不同Section设置不同的背景颜色,设置Cell的对齐方式,支持左对齐,右对齐,居中。
MIT License
171 stars 28 forks source link

可不可以设置section的最小高度呢? #18

Open RiversMaJianCheng opened 1 year ago

RiversMaJianCheng commented 1 year ago

可不可以设置section的最小高度呢?

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

kingjiajie commented 1 year ago

可以简单一描述一下么?

RiversMaJianCheng commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

RiversMaJianCheng commented 1 year ago

想要的效果就是section的高度可以设置最小的一个高度,然后如果左对齐的label行数大于最小高度的话进行自适应高度

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

kingjiajie commented 1 year ago

但是现在内部代码暂未支持这个设置。需要更新。

RiversMaJianCheng commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

RiversMaJianCheng commented 1 year ago

但是现在内部代码暂未支持这个设置。需要更新。

短时间这个加不上吧,感觉还挺复杂的

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

复杂程度还可以,判断是多了点,开始的时候将逻辑构思好的情况下,处理起来会比较快一点,近段时间我看看能否处理一下,我应该会先新建一个单独分支,到时候你pod到那个新分支查看一下,看是否符合要求我再合并。

kingjiajie commented 1 year ago

根据简单的调试发现,这个情况比较特殊,需要使用者自行确定好为什么需要最小高度,因为最小高度会影响背景显示模块大小,如果cell是没数据的情况,是否还需要显示最小高度?如果需要显示,那么就会出现多section,背景重叠问题。所以这个情况需要使用者处理好无数据或数据较少可能重叠的情况的。

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

RiversMaJianCheng commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

好的,多谢大佬,我写完这个界面试一下哈,辛苦辛苦了

RiversMaJianCheng commented 1 year ago

根据简单的调试发现,这个情况比较特殊,需要使用者自行确定好为什么需要最小高度,因为最小高度会影响背景显示模块大小,如果cell是没数据的情况,是否还需要显示最小高度?如果需要显示,那么就会出现多section,背景重叠问题。所以这个情况需要使用者处理好无数据或数据较少可能重叠的情况的。

我的理解应该是既然给了最小高度,如果没数据肯定也是以最小高度设置背景的,我们这个产品需求确实比较奇怪

kingjiajie commented 1 year ago

根据简单的调试发现,这个情况比较特殊,需要使用者自行确定好为什么需要最小高度,因为最小高度会影响背景显示模块大小,如果cell是没数据的情况,是否还需要显示最小高度?如果需要显示,那么就会出现多section,背景重叠问题。所以这个情况需要使用者处理好无数据或数据较少可能重叠的情况的。

我的理解应该是既然给了最小高度,如果没数据肯定也是以最小高度设置背景的,我们这个产品需求确实比较奇怪

这边有新的一个commit:88989b5bc07836b14e3f27cc98ceb521a4e4a152 可以使用这个,然后建议,由于你这个是特殊的情况,当cell数据源个数为0 的情况下,建议创建一个empty的cell,这样就能计算了。

RiversMaJianCheng commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

我刚试了一下,没有起作用。我是这样用的。 pod 'JJCollectionViewRoundFlowLayout', :git => 'https://github.com/kingjiajie/JJCollectionViewRoundFlowLayout.git',:commit=>'52226b9ddf23fd074ce5194ea70889f27f6a9d7e'

JJCollectionViewRoundFlowLayout *layout = [[JJCollectionViewRoundFlowLayout alloc] init]; // layout.sectionInset = UIEdgeInsetsMake(10.0, 16.0, 10.0, 16.0); layout.collectionCellAlignmentType = JJCollectionViewFlowLayoutAlignmentTypeByLeft; layout.delegate = self; layout.isCalculateFooter = NO; layout.isCalculateHeader = NO; 代理方法也调用了:

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

我刚试了一下,没有起作用。我是这样用的。 pod 'JJCollectionViewRoundFlowLayout', :git => 'https://github.com/kingjiajie/JJCollectionViewRoundFlowLayout.git',:commit=>'52226b9ddf23fd074ce5194ea70889f27f6a9d7e'

JJCollectionViewRoundFlowLayout *layout = [[JJCollectionViewRoundFlowLayout alloc] init]; // layout.sectionInset = UIEdgeInsetsMake(10.0, 16.0, 10.0, 16.0); layout.collectionCellAlignmentType = JJCollectionViewFlowLayoutAlignmentTypeByLeft; layout.delegate = self; layout.isCalculateFooter = NO; layout.isCalculateHeader = NO; 代理方法也调用了:

  • (CGFloat)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout minHeightForSection:(NSInteger)section { return 200; }
  • (JJCollectionViewRoundConfigModel )collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout configModelForSectionAtIndex:(NSInteger)section{ JJCollectionViewRoundConfigModel model = [[JJCollectionViewRoundConfigModel alloc]init]; model.cornerRadius = 4; if (section == 0) { model.backgroundColor = [UIColor colorWithHexadecimal:0xf7f7f7]; }else{ model.backgroundColor = [UIColor whiteColor]; } return model; } 背景颜色设置没有问题

刚刚好上面回复了。你尝试一下上面说的创建一个empty的占位cell的方案。

RiversMaJianCheng commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

我刚试了一下,没有起作用。我是这样用的。 pod 'JJCollectionViewRoundFlowLayout', :git => 'https://github.com/kingjiajie/JJCollectionViewRoundFlowLayout.git',:commit=>'52226b9ddf23fd074ce5194ea70889f27f6a9d7e' JJCollectionViewRoundFlowLayout *layout = [[JJCollectionViewRoundFlowLayout alloc] init]; // layout.sectionInset = UIEdgeInsetsMake(10.0, 16.0, 10.0, 16.0); layout.collectionCellAlignmentType = JJCollectionViewFlowLayoutAlignmentTypeByLeft; layout.delegate = self; layout.isCalculateFooter = NO; layout.isCalculateHeader = NO; 代理方法也调用了:

  • (CGFloat)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout minHeightForSection:(NSInteger)section { return 200; }
  • (JJCollectionViewRoundConfigModel )collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout configModelForSectionAtIndex:(NSInteger)section{ JJCollectionViewRoundConfigModel model = [[JJCollectionViewRoundConfigModel alloc]init]; model.cornerRadius = 4; if (section == 0) { model.backgroundColor = [UIColor colorWithHexadecimal:0xf7f7f7]; }else{ model.backgroundColor = [UIColor whiteColor]; } return model; } 背景颜色设置没有问题

刚刚好上面回复了。你尝试一下上面说的创建一个empty的占位cell的方案。

是的,我现在是创建了一个empty的cell方案,初步实现效果,但是不是太理想。因为如果有数据的话,比如说一个label数据,这时候section的高度就会比较矮。但是UI要求一个数据的时候背景的高度还是比较高的。空的empty高度我这边可以随意设置。这时候空的empty高度我设置UI要求的高度,如果突然有了一个数据,这时候高度就会突然从高变矮,体验不好。我们数据是可以动态增加减少的。

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

我刚试了一下,没有起作用。我是这样用的。 pod 'JJCollectionViewRoundFlowLayout', :git => 'https://github.com/kingjiajie/JJCollectionViewRoundFlowLayout.git',:commit=>'52226b9ddf23fd074ce5194ea70889f27f6a9d7e' JJCollectionViewRoundFlowLayout *layout = [[JJCollectionViewRoundFlowLayout alloc] init]; // layout.sectionInset = UIEdgeInsetsMake(10.0, 16.0, 10.0, 16.0); layout.collectionCellAlignmentType = JJCollectionViewFlowLayoutAlignmentTypeByLeft; layout.delegate = self; layout.isCalculateFooter = NO; layout.isCalculateHeader = NO; 代理方法也调用了:

  • (CGFloat)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout minHeightForSection:(NSInteger)section { return 200; }
  • (JJCollectionViewRoundConfigModel )collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout configModelForSectionAtIndex:(NSInteger)section{ JJCollectionViewRoundConfigModel model = [[JJCollectionViewRoundConfigModel alloc]init]; model.cornerRadius = 4; if (section == 0) { model.backgroundColor = [UIColor colorWithHexadecimal:0xf7f7f7]; }else{ model.backgroundColor = [UIColor whiteColor]; } return model; } 背景颜色设置没有问题

刚刚好上面回复了。你尝试一下上面说的创建一个empty的占位cell的方案。

是的,我现在是创建了一个empty的cell方案,初步实现效果,但是不是太理想。因为如果有数据的话,比如说一个label数据,这时候section的高度就会比较矮。但是UI要求一个数据的时候背景的高度还是比较高的。空的empty高度我这边可以随意设置。这时候空的empty高度我设置UI要求的高度,如果突然有了一个数据,这时候高度就会突然从高变矮,体验不好。我们数据是可以动态增加减少的。

这个经过我的demo上第一栏的验证,应该符合你此前说的需求的,你看看代码上是否有问题还是哪里出了问题,(创建了一个empty的cell)这个方案是让内部计算可以走下去,能够计算逻辑,无论该占位cell高度多少,都会判断最小高度,如:占位empty高度为0,那么背景会判断上述200的高度,最后背景显示200的高度。 后续有数据的高度还是会进行判断的。

kingjiajie commented 1 year ago

你好,请问最小高度大概是什么情况会需要设置?因为section高度本来是collectionview内部高度。

是这样的,UI设计有个最小的高度,因为里面有提示,最小高度大概是两行label的高度,如果再多比如三行的的话开始自适应这种。

按照你的简单描述的情况,是可以实现的,但是这里还有几个问题要考虑到,就是section是否有header和footer,还是只计算cell里的内容,然后是否只计算最小高度,宽度还是正常全屏计算?

感觉还挺麻烦的啊,辛苦大佬了。目前不支持header和footer,cell里面的内容给个最小高度,这个高度是外部随机给的。宽度是collectionview的宽度

我新建了分支jiajie/develop/dev_2.9.3 然后commit为52226b9ddf23fd074ce5194ea70889f27f6a9d7e ,你可以尝试pod指向对应commit看是否能够实现对应内容。并反馈一下,谢谢

我刚试了一下,没有起作用。我是这样用的。 pod 'JJCollectionViewRoundFlowLayout', :git => 'https://github.com/kingjiajie/JJCollectionViewRoundFlowLayout.git',:commit=>'52226b9ddf23fd074ce5194ea70889f27f6a9d7e' JJCollectionViewRoundFlowLayout *layout = [[JJCollectionViewRoundFlowLayout alloc] init]; // layout.sectionInset = UIEdgeInsetsMake(10.0, 16.0, 10.0, 16.0); layout.collectionCellAlignmentType = JJCollectionViewFlowLayoutAlignmentTypeByLeft; layout.delegate = self; layout.isCalculateFooter = NO; layout.isCalculateHeader = NO; 代理方法也调用了:

  • (CGFloat)collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout minHeightForSection:(NSInteger)section { return 200; }
  • (JJCollectionViewRoundConfigModel )collectionView:(UICollectionView )collectionView layout:(UICollectionViewLayout )collectionViewLayout configModelForSectionAtIndex:(NSInteger)section{ JJCollectionViewRoundConfigModel model = [[JJCollectionViewRoundConfigModel alloc]init]; model.cornerRadius = 4; if (section == 0) { model.backgroundColor = [UIColor colorWithHexadecimal:0xf7f7f7]; }else{ model.backgroundColor = [UIColor whiteColor]; } return model; } 背景颜色设置没有问题

刚刚好上面回复了。你尝试一下上面说的创建一个empty的占位cell的方案。

是的,我现在是创建了一个empty的cell方案,初步实现效果,但是不是太理想。因为如果有数据的话,比如说一个label数据,这时候section的高度就会比较矮。但是UI要求一个数据的时候背景的高度还是比较高的。空的empty高度我这边可以随意设置。这时候空的empty高度我设置UI要求的高度,如果突然有了一个数据,这时候高度就会突然从高变矮,体验不好。我们数据是可以动态增加减少的。

这个经过我的demo上第一栏的验证,应该符合你此前说的需求的,你看看代码上是否有问题还是哪里出了问题,(创建了一个empty的cell)这个方案是让内部计算可以走下去,能够计算逻辑,无论该占位cell高度多少,都会判断最小高度,如:占位empty高度为0,那么背景会判断上述200的高度,最后背景显示200的高度。 后续有数据的高度还是会进行判断的。

我看到你这边可以设置minHeightForSection,按道理应该是已经选用了我这边新分支的代码了,内部的确是判断了的。尝试设置commit:88989b5bc07836b14e3f27cc98ceb521a4e4a152 这个是刚刚上面回复的新commit来的,修改了一些内部实际哦判断最小高度逻辑处理时机。

kingjiajie commented 1 year ago

如果这边还有什么疑问的话可以反馈一下。

RiversMaJianCheng commented 1 year ago

很奇怪,我这个一直没有效果

kingjiajie commented 1 year ago

你试试新分支demo的第一项,看看是哪里配置出了问题还是怎么样的,在新分支的demo第一项进去是可以查看到该处理的。

kingjiajie commented 1 year ago

很奇怪,我这个一直没有效果

你试试新分支demo的第一项,看看是哪里配置出了问题还是怎么样的,在新分支的demo第一项进去是可以查看到该处理的。

RiversMaJianCheng commented 1 year ago

很奇怪,我这个一直没有效果

你试试新分支demo的第一项,看看是哪里配置出了问题还是怎么样的,在新分支的demo第一项进去是可以查看到该处理的。

好的 我再看看 辛苦大佬了