美文网首页程序员首页投稿(暂停使用,暂停投稿)iOS Developer
关于UITableView分割线不显示的几种可能和处理办法

关于UITableView分割线不显示的几种可能和处理办法

作者: 高浩浩浩浩浩浩 | 来源:发表于2016-12-14 14:58 被阅读1557次

    今天测试反馈了一个很诡异的bug,长按cell进入编辑状态会导致分割线消失不见:

    测试的截图
    本来以为是常见的cell高度计算错误导致布局的时候cell重叠覆盖了分割线
    但是!!!如果这么简单我就不会写这个分享了,当我开打Xcode的界面调试工具看UI的层级关系时,看到两个cell之间是有1px的间距的 两个cell之间是有1px的间距的 选中状态下会发现有很明显的白线
    选中状态下会发现有很明显的白线,但是cellseperatorline却没有显示。
    查了相关资料,产生上述情况有两种可能:

    1. 精度丢失

    计算cell的高度结果可能是个精度很长的float类型,这样tableView在渲染的时候会导致精度丢失。
    解决这种情况最好在ceil, floor对最后的结果取整。这样避免渲染的时候系统精度四舍五入丢失精度

    + (float)heightForFolder:(UDAbstractFileModel *)folder
    {
        NSString *fileName = folder.filename;
        CGSize size = [fileName sizeWithFont:[UIFont systemFontOfSize:15] forWidth:SCREEN_WIDTH - 102];
        return ceilf(size.height + 45);
    }
    

    2.编辑状态系统会隐藏一下分割线

    这里直接调用

      [self.tableView setEditing:editing animated:animated];
    

    猜测系统会隐藏分割线,所以这里要用tableViewupdate方法:

    [self.tableView beginUpdates]; // 解决长按进入编辑状态时,当前cell上下的分割线消失的问题(原因猜测:cell选中状态系统默认隐藏分割线,因长按进入编辑,导致tableView恢复显示分隔线代码异常)
    [self setEditing:YES animated:YES];
    [self.tableView endUpdates];
    

    最后

    如果以后有朋友再遇到这种情况,不妨参考下以上的解决办法~(手动微笑)

    相关文章

      网友评论

        本文标题:关于UITableView分割线不显示的几种可能和处理办法

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