zoukankan      html  css  js  c++  java
  • iOS UITableView的分割线短15像素,移动到最左边的方法(iOS8)

    有好几个朋友问我ios 分割线端了一些 如何解决,于是我就写一篇博客吧。
    为什么我说是少了15像素呢?
    首先我们拖拽一个默认的tableview 控件! 看下xcode5 面板的inspector(检查器)
    我们可以找到一个 Separator Insetss 标签 默认是 Default
    我们选择一下 发现有个Custom 这时候我们惊奇的发现Left 15 ,这时候我们只要把这个 15 改成 0 , 然后保存, 你就会发现tableview 的分割线跟以前一样了。

    有些朋友问了如果是代码写的tableview 的呢。
    下面我们接着分析这个问题,让我们查询下 tableview delegate 我们会发现 ios7 增加了一些新属性,
    @property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR;// allows customization of the frame of cell separators

    这个时候你应改发现separatorInset 这个单词是否有点眼熟, 苹果公司已经给了注释,可以自定义视cell 的分割线,
    UIEdgeInsets 是个结构体类型,这时候我们发现了我们要的属性 left
    typedef struct UIEdgeInsets {
    CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
    } UIEdgeInsets;


    转载
    现在我们可以用代码调用下面这个方法,
    [myTableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
    这时候你会发现你的tableview 的分割线是不是跟以前一样了呢!

    在ios7中,UITableViewCell左侧会有默认15像素的空白。这时候,设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉。
    但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero 已经不起作用了。下面是解决办法
    首先在viewDidLoad方法加入以下代码:
    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }
    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
    [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
    然后在UITableView的代理方法中加入以下代码
    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
    [cell setSeparatorInset:UIEdgeInsetsZero];
    }
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    [cell setLayoutMargins:UIEdgeInsetsZero];
    }
    }

    亲测:iOS8和iOS9中都是有效的,有图有真相,上图。

  • 相关阅读:
    PAT1134:Vertex Cover
    PAT1107:Sum of Number Segments
    PAT1009:Product of Polynomials
    力扣练习003---先序遍历构造二叉树(1008)
    力扣练习002---设计循环队列(622)
    力扣练习001---基本计算器(224)
    基础算法 --- 前缀和与差分
    数据结构 --- 二叉树
    基础算法 --- DFS(深度优先搜索)
    基础算法 --- BFS(广度优先搜索/宽度优先搜索)
  • 原文地址:https://www.cnblogs.com/wobuyayi/p/5622943.html
Copyright © 2011-2022 走看看