我的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
方法
经过我坚持不懈的百度谷歌,终于~还是没找到我想要的(可能搜索的姿势不对)
但是我尝试着调用了 layoutIfNeeded
方法之后,效果就正常显示了(内容不会立刻消失了)。
思考
我想 这应该跟collectionview
的一个属性有关系:collectionViewLayout
,我用我4级英语水平翻看了官方文档,它主要管理collectionview
内容的布局的,包括所有的cell和装饰view(supplementary views)
(:P 嗯,大概就是这样),在动画中调用layoutIfNeed
,可能会重新去布局设置这个属性(反正跟collectionview 的内部机制有关系吧),最终解决了这个问题。
PS
关于思考,如果有更好的解释,不吝赐教🤝。
网友评论