UICollectionView 设置section的背景色


  • 使用tableview时,我们可以随意设置Tableview中没个Section的背景颜色而在UICollectionView中。系统并没有给我们提供一个现成的代理方法或者是属性来设置。为collectionView设置需要自己去自定义。所以在系统的流式布局UICollectionViewFlowLayout的基础上进行自定义。在网上找到了一个swift版本的的。在此基础上进行修改完成了个OC版的Demo,写下备用。也可以留给有需要的人。

  • 使用方式:可以使用github上的ULBCollectionViewFlowLayout。在控制器中遵守ULBCollectionViewDelegateFlowLayout协议。在创建CollectionView时使用ULCollectionViewFlowLayout样式的layout,因为ULCollectionViewFlowLayout继承与UICollectionViewFlowLayout,多提供了下面的代理方法:

    <code class="hljs erlang has-numbering"><span class="hljs-pp">- <span class="hljs-params">(<span class="hljs-variable">UIColor</span> *)</span>collectionView:<span class="hljs-params">(<span class="hljs-variable">UICollectionView</span> *)</span>collectionView layout:<span class="hljs-params">(<span class="hljs-variable">UICollectionViewLayout</span>*)</span>collectionViewLayout colorForSectionAtIndex:<span class="hljs-params">(<span class="hljs-variable">NSInteger</span>)</span>section;</span></code>
    <code class="hljs erlang has-numbering"><span class="hljs-pp"></span></code><code>Tips:collectionView在显示的时候没有问题。但是当你进行collectionView删除时,当section删除了最后一个item时就会奔溃。所以需要在代码使用时加上保护。</code>参照<a target=_blank href="https://stackoverflow.com/questions/24447065/removing-the-last-cell-in-uicollectionview-makes-a-crash/24449122#24449122?newreg=836dae9d645a4cde93e3b60dd81411ea">stackoverflow</a>在collectionView使用的代理时进行修改可以暂时解决奔溃问题,如下:
    <code class="hljs objectivec has-numbering">- (<span class="hljs-built_in">NSInteger</span>)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
        <span class="hljs-keyword">if</span>(<span class="hljs-keyword">self</span><span class="hljs-variable">.dataSoruces</span><span class="hljs-variable">.count</span>><span class="hljs-number">0</span>){ <span class="hljs-keyword">return</span> <span class="hljs-number">1</span>; }
        <span class="hljs-keyword">else</span>{ <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>; }
    }
    </code><ul class="pre-numbering">在删除item时。加上判断,如果删除item之后,section中的</ul>
    <code class="hljs ruby has-numbering">[   <span class="hljs-keyword">self</span> <span class="hljs-symbol">deleteItemsFromDataSourceAtIndexPaths:</span>selectedIndexes];
    
        <span class="hljs-keyword">if</span>(idShadeInside.count > <span class="hljs-number">0</span>){
            [<span class="hljs-keyword">self</span>.cv <span class="hljs-symbol">deleteItemsAtIndexPaths:</span>selectedIndexes];
        }
        <span class="hljs-keyword">else</span>{
            <span class="hljs-regexp">//</span><span class="hljs-constant">Creating</span> an <span class="hljs-constant">IndexSet</span> with the <span class="hljs-constant">Section</span> to <span class="hljs-constant">Erase</span>
            <span class="hljs-constant">NSMutableIndexSet</span> *indexSet = [<span class="hljs-constant">NSMutableIndexSet</span> indexSet];[indexSet <span class="hljs-symbol">addIndex:</span><span class="hljs-number">0</span>];
            [<span class="hljs-keyword">self</span>.cv <span class="hljs-symbol">deleteSections:</span>indexSet];
        }
    </code>
      
      

    ps:以上我是基于一个section的基础上添加。多个section的话。自己可以进行判断。以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值