1.11-高级控件使用
@UIStackView
1适宜分配属性:distribution = UIStackViewDistributionFillProportionally
案例:当两个子控件文本内容长度相差很大时,如果平均分配,可能导致长子控件无法全部显示文本,这时就可用该属性。
@UITableView
知识点
1cell的高度默认是44.
2UITableViewController的使用缺点,不能自如的控制顶部距离
@UITableVie组合UICollectionView?
注意点
1有多组section时,要考虑是否每组内有多个cell,每个cell再嵌套一个多item的UICollectionView?
还是每组只有一个cell,这一个cell内嵌套了多item的UICollectionView?
@UICollectionView
注意点:
1如果cell的子控件是个按钮并撑满cell,那么会阻拦事件
2collectionView的缓存策略影响下,getCell代理方法,会预先缓存调用右边的cell
3如果用collectionView做pageVCView的载体,最后一个不要view不要空setupUI,否则可能去呈现第一个View
4利用代理方法的indexPath移动外界的索引,不靠谱,必须自己用contentOffset计算index
示例代码:
//offset
CGFloat length = self.collectionView.contentOffset.x ;
int index = length / djScreenW ;
[_segmen setSelectedSegmentIndex:index];
5UICollectionView的item横向间距属性:minimumInteritemSpacing,写得略不规范,一直没太明白其意思,
Interitem这个单词查字典查不到,仔细看才知道应该是:minimumInter + ItemSpacing,
item也要大写才对嘛,官方API的小小bug吧
,七
问题集锦
1数据源方法不会调用?
<1没有给表头,设置数据源
<2 设置了数据源,但是其实设置失败,比如控件还没实例化就赋值,就会失败
<3layout设置了表头控件,但是却没有实现对应的表头数据源方法,导致cell的数据源方法也失败
2自定义cell时init方法不会调用?
当然了,因为和tableviewcell一样,很多内部操作,比如布局子控件们,都放在了initWithFrame里了
所以收藏控件,重写时必须重写initWithFrame方法
3重复利用cell们的数据没更新到最新?
需要在传入数据属性的set方法,刷新一下。
//模型的set方法,里面最好刷新数据
- (void)setItems:(NSArray *)items
{
_items = items;
/*
刷新数据,不然有些cell的数据,不会是最新的,
因为第三数据源方法下,会提前缓存下一个cell,但此时数据又似乎没到位。
*/
[self.collectionView reloadData];
}
浙公网安备 33010602011771号