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中都是有效的,有图有真相,上图。

  • 相关阅读:
    你所不知道的mfc…mfc项目索引 &mfc调优指南 &mfc vc添加添加子功能指南
    Cu 大彻大悟内存管理 mm (update 0410)
    [转]Linux iostat监测IO状态
    linux virtual memory layout by moniskiller upload [读书笔记]
    河畔找到的 面经笔经
    【转】Linux本地磁盘(硬盘)介绍
    读写UTF8、Unicode文件
    codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
    DB2表信息以及字段信息的表
    iBatis.NET获取resultMap相关数据
  • 原文地址:https://www.cnblogs.com/wobuyayi/p/5622943.html
Copyright © 2011-2022 走看看