美文网首页
2018-06-01 masonry布局的cell tabl

2018-06-01 masonry布局的cell tabl

作者: 惊蛰_e3ce | 来源:发表于2018-06-01 16:34 被阅读0次

    tableviewcell是用masonry布局

    图片.png 滑到底部时要求灰色条部分刚好停在相应位置 需要计算 点击 图片.png 时
    1:tableview需要要产生的偏移量needOffset
    2:以及tableview正常情况下的偏移量 originOffset(contentsize - tableheight);

    3:将originOffset和needoffset的差值作为 tableview的contentinset的bottom
    4:这时候重点是获取到contengsize
    5:但是tableview的contentsize一直获取的不准确 needlayout也不行 tableview滑动过程中contentsize还会改变
    没办法只能用kvo
    6:但是这个界面比较特殊

    图片.png 信用 认证等都是可能有可能无 我的信用假导航要求吸顶 图片.png 刷新效果要求在中间出现 而不是顶部
    7:collectionview的高度 是tableview的contentinset的top 全要在数据下发后才能准确计算 bottom要计算差值 用kvo小屏(5s se等会闪退 6等不会 查不出什么原因导致) 图片.png 堆栈显示 是死循环 添加的kvo和 图片.png mjrefresh的监听offset的kvo死循环(大屏不会贼奇怪)
    8:解决方法

    pragma mark kvo

    • (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
      CGSize oldSize = [change[NSKeyValueChangeOldKey] CGSizeValue];
      CGSize newSize = [change[NSKeyValueChangeNewKey] CGSizeValue];
      if (object == _tableView && [keyPath isEqualToString:@"contentSize"] && [_tableView superview] && !CGSizeEqualToSize(oldSize,newSize)) {
      [self changeTableInsets];
      }
      }

    9:大量测试发现 oldsize和newsize相同 没变化还走kvo CGSizeEqualToSize(oldSize,newSize)这个判断很重要 只是针对现象解决 没查到原因

    10:随数据源更改contentinset的时候会调用 didscrollview方法 导致抖动

    相关文章

      网友评论

          本文标题:2018-06-01 masonry布局的cell tabl

          本文链接:https://www.haomeiwen.com/subject/yksksftx.html