iOS8 UITableView 分割条设置separator intent = 0 不起作用

ios7的时候在storyboard 设置 TableView的separator intend = 0 可以让tableview的分割条顶到头。

但是,升级了iOS8时,发现不起作用了。

经过google,在 stackoverflow 发现了答案

翻译纪录一下

iOS8 在cell和tableview中都引入了layoutMargins属性,而且这个属性在iOS 7中并没有,所以你需要区别对待这两个版本。

使用 Ricky 的方案设置cell中的layoutMargin属性:

-(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];
    }


//按照作者最后的意思还要加上下面这一段

if([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]){

[cell setPreservesSuperviewLayoutMargins:NO];

}

}

你还需要在tableview中设置同样的属性. 通过多次试验,我发现你可以在viewDidLayoutSubviews.中设置这个属性

把下面代码拷贝到你的view的实现中

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
} 

这样,在ios7,ios8中都可以实现分割条顶头的需求了。(译者:ios6缺省是顶头的,因此这个方案可以适用于ios6-8).

Edit: 按照  @bffmike 在 Twitter 上所说, 你可能还需要在cell中设置 preservesSuperviewLayoutMargins=NO .  再次说明:每个人的情况因人而异.

时间: 2024-08-02 07:02:02

iOS8 UITableView 分割条设置separator intent = 0 不起作用的相关文章

mfc分个窗口,设置分割条不可移动

最近要做一个项目,做界面时遇到了这个问题,找了好多资料,终于解决了,在此记录一下,希望对有需要的人有所帮助.好了,不多说了,具体的处理如下: 新建一个类CFixSplitterWnd继承CSplitterWnd,添加 ON_WM_LBUTTONDOWN() ON_WM_SETCURSOR() ON_WM_MOUSEMOVE() 三个消息的响应,主要代码如下: 头文件 1 protected: 2 afx_msg void OnLButtonDown(UINT nFlags, CPoint pt)

iOS8 UITableView动态加载cell的高度

iOS8 UITableView动态加载cell的高度 iOS8新特性,ios8以后,你在也不需要根据cell上内容的不一样计算每个cell的高度了,因为系统可以自己加载它的高度.下面是具体的实现代码: @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> // 数据源 @property (nonatomic, strong) NSMutableArray *dataArray; @end @imple

js 实现分割条

js 实现 切分条效果, 为了熟悉js  写法,纯javascript 脚本编写 简单介绍几个函数: setCapture()函数的作用就是将后续的mouse事件都发送给这个对象, releaseCapture() 就是将鼠标事件还回去 由document.window.object之类的自行来处理,这样就保证了在拖动的过程中,不会由于经过了其它的元素而受到干扰.另外,还有一个很重 要的事情是,在Win32上,mouse move的事件不是一个连续的,也就是说,并不是我们每次移动1px的鼠标指针

UITableView 索引的设置

if (_indexCollation == nil) { _indexCollation = [UILocalizedIndexedCollation currentCollation]; } NSArray *localTracks = [NSArray array]; //查找本地音乐 NSEntityDescription * trEty = [NSEntityDescription entityForName:@"Track" inManagedObjectContext:S

Nginx服务优化之隐藏版本号、修改用户与组、配置页面缓存与时间、日志分割以及设置连接超时

Nginx服务优化之隐藏版本号.修改用户与组.配置页面缓存与时间.日志分割以及设置连接超时 前言 ? 在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数配置,以达到最优的用户体验. ? 默认的nginx安装参数只能提供最基本的服务,还需要调整如网页缓存时间.连接超时.网页压缩等相应参数,才能发挥出服务器的最大作用. 一.隐藏版本号 ? 我们为什么要隐藏版本号? ? 我们一定要有一个意识:对于软件或者说服务,其安全性必然不可能是无懈可击的,总会或多或少地存在各种bug或者

Win2008 设置针对IE5.0 6.0的主页策略

Win2008 设置针对IE5.0  6.0的主页策略 在设置组策略针对xp客户端的时候,ie主页策略对xp客户端不生效,但对win7生效 查了好多资料,也找到了首选项里面的internet设置 并添加了 IE5.6的设置,也设置了主页,但是还是不生效,百思不得其解,用baidu根本查 不到相关的专业资料,google为啥这段时间打不开了,只要用bing并用了英文关键字查找, 翻了好久终于找到了,原来在设置主页的时候要按个"F6" 红色的底线才会变成绿色 不然不生效,悲催的微软,也搞了

win10系统更新补丁时进度条一直卡在0%不动的解决方案

为了能够让win10系统更加安全稳定,很多用户都会时不时为自己的电脑安装补丁.不过,部分用户在为win10系统更新补丁时,却会遇到进度条一直卡在0%不动的问题.这该怎么办呢?下面,小编就告诉大家解决该问题的具体方法. 具体如下: 1.ctrl+shift+esc 打开“任务管理器”,找到“服务”页,找到wuauserv,右键选“重新启动”. 2.win+i打开“更新与安全”->windows更新,重试.即可解决.

老生常谈:ie6下,a标签href设置javascript:void(0);后绑定的click失效

老生常谈:ie6下,a标签href设置javascript:void(0);后绑定的click事件,如果有form表单提交或跳转等事件,会失效!举例: <a id="id_back" href="javascript:void(0);" title="返回管理">返 回</a> $("#id_back").click(function(){         $("#id_frm").

如何在离线或内网环境中设置Rancher 2.0

有时候,我们无法使用像GKE或AKE这样的托管服务,甚至处于离线或与外网隔离的状态,而无法直接访问互联网.然而,即使在这种情况下,仍然是有方法使用Rancher管理集群的. 本文中,我们将向你介绍如何在离线或内网环境中运行Rancher 2.0. 私有镜像库 因为所有与Rancher相关的服务都在容器中运行,因此首先你需要的是在环境中存储容器.在本文的示例中,我们将使用Docker Registry(Docker镜像仓库).如果你已经有了镜像仓库,可以跳过这些步骤. 注意:在Rancher 2.