iOS UITableViewCell的分割线缩进

编程入门 行业动态 更新时间:2024-10-04 15:35:00

iOS UITableViewCell的<a href=https://www.elefans.com/category/jswz/34/1767228.html style=分割线缩进"/>

iOS UITableViewCell的分割线缩进

有时候会有这样一个需求,当cell左边添加图片的时候,觉得下面分割线不太好看,需要移到图片的右边去,

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 . 再次说明:每个人的情况因人而异.


更多推荐

iOS UITableViewCell的分割线缩进

本文发布于:2024-02-28 00:35:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1767127.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分割线   iOS   UITableViewCell

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!