UICollectionView 展开收起 实践笔记

2017-11-12  本文已影响291人  嗯哎嘶唠咯

我的2017年就这么快要结束了?那就在扯扯犊子吧 🤜

问题

效果图.gif

这个筛选框是由uicontrol 添加上collectionview 实现的,但是,收起的这个效果有一些问题:collectionview的内容直接就消失了,感觉十分的诡异。
起初我是这么写收起的:
只改变了collectionview 的 frame.size.height:

 [UIView animateWithDuration:1 animations:^{

        _collectionView.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, 0);
        self.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
    } completion:^(BOOL finished) {
       /*略*/
    }];

解决

调用layoutIfNeed 方法

处理办法.png

经过我坚持不懈的百度谷歌,终于~还是没找到我想要的(可能搜索的姿势不对)
但是我尝试着调用了 layoutIfNeeded方法之后,效果就正常显示了(内容不会立刻消失了)。

思考

我想 这应该跟collectionview的一个属性有关系:collectionViewLayout,我用我4级英语水平翻看了官方文档,它主要管理collectionview 内容的布局的,包括所有的cell和装饰view(supplementary views)(:P 嗯,大概就是这样),在动画中调用layoutIfNeed ,可能会重新去布局设置这个属性(反正跟collectionview 的内部机制有关系吧),最终解决了这个问题。

PS

关于思考,如果有更好的解释,不吝赐教🤝。

上一篇下一篇

猜你喜欢

热点阅读