设置UITableViewCell分割线顶格

来源:互联网 发布:mysql.sock 作用 编辑:程序博客网 时间:2024/06/06 02:11

设置UITableViewCell分割线顶格

转载# http://www.jianshu.com/p/afa312d046e3


iOS 7下

想要设置cell的分割线缩进为0,在iOS7中只用简单的设置 cell.separatorInset = UIEdgeInsetZero;

iOS 8下

在iOS8下,上面的方法就不行啦,经过查阅资料, 终于在stackoverflow上查到了详细的说明,源地址戳这里stackoverflow;

This property isn't available on iOS 7.0 so you need to make sure you check before assigning it!
Additionally, Apple has added a property to your cell that will prevent it from inheriting your Table View's margin settings. When this property is set, your cells are allowed to configure their own margins independently of the table view. Think of it as an override.
This property is called preservesSuperviewLayoutMargins, and setting it toNO will allow the cell's layoutMargin setting to override whatever layoutMargin is set on your TableView. It both saves time (you don't have to modify the Table View's settings), and is more concise. Please refer to Mike Abdullah's answer for a detailed explanation.


iOS8中,新加入了一个属性:preservesSuperviewLayoutMargins,呐,这个属性的加入,可以避免你的cell的外边继承自你的tableView,当你设置这个属性的时候,你可以自由的设置你的cell的外边距,而不必担心tableView和cell两者的相互影响.(翻译的好渣,你们自己去看英文吧...)

具体怎么代码实现呢

//Setup your cell margins:-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {     // Remove seperator inset     if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {         [cell setSeparatorInset:UIEdgeInsetsZero];     }     // Prevent the cell from inheriting the Table View's margin settings     if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {         [cell setPreservesSuperviewLayoutMargins:NO];       }     // Explictly set your cell's layout margins     if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {         [cell setLayoutMargins:UIEdgeInsetsZero];     }}
0 0