美文网首页
UITableView常见问题

UITableView常见问题

作者: 活最好的自己 | 来源:发表于2018-02-05 20:37 被阅读35次

    一, 在隐藏系统导航栏的时候, UITableView 内容默认向下偏移量

    1. 自定义状态栏代替系统状态栏

    为了响应产品需求, 需要把用特殊样式的导航栏, 因此需要隐藏系统的状态栏, 用自定义的状态栏代替.

    2. 层次结构图

    1> 使用层次结构图观察, UITableView的位置时正常的, 里面的UITableViewWrapperView 向下偏移了20个点.
    2> ① UITableViewWrapperView的初始时偏移, 滑动时不偏移.
    ② 在弹幕内容量超过一页的时候, 向上拖拽到底部, 再看层次结构, UITableViewWrapperView没有发生偏移了.
    3> 可以推断出, UITableView的 contentInset 发生了变化.
    4> contentInset 只会改变 scrollview 内容的起点平衡位置, 不会改变它的滑动范围(contentSize).

    3. UIViewController 的 automaticallyAdjustsScrollViewInsets属性

    1> 想起了之前遇到过的一个属性 automaticallyAdjustsScrollViewInsets属性, 设置成 NO 以后, 彻底根治这个问题了.
    2>该属性的默认值是YES, 作用就是当导航栏隐藏时, 系统会根据状态栏的显示或隐藏, 确定是否更改当前控制器 view 中的 scrollview 的 contentInset.
    3> 使用组合原理, 对状态栏和导航栏分别进行了显示和隐藏操作.


    UIViewController 的 automaticallyAdjustsScrollViewInsets 属性.png

    4> 结论1: 只要导航栏不隐藏, 控制器的 view 的 frame 就会从导航栏的底部开始算起...只有导航栏隐藏, 控制器的 view 的 frame 才会从状态栏的起点开始算起.
    5> 结论2: 只有在导航栏隐藏的时候, 控制器 view 和状态栏 frame 的起点才会一致, 如果状态栏不隐藏, 就会在一开始遮住 scrollview 的顶部....
    因此需要在保证 scrollview 的 frame 不变的情况下, 让 scrollview 有一个默认的初始的向下偏移量.

    二, UITableView的底部多余的cell和下划线

    1> UITableView在 tableFooterView 属性为空的时候, 会显示很多 cell.
    2> 可以使用tableView.tableFooterView = [UIView new]代码, 来让 tableview 停止显示 cell.

    参考 https://www.jianshu.com/p/d2efcad46ef2

    相关文章

      网友评论

          本文标题:UITableView常见问题

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