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];
}

 

    

 

  

 

posted @ 2017-02-25 18:17  行者烧炉子  阅读(159)  评论(0)    收藏  举报