美文网首页ios 开发收藏
iOS 修改UITableView separator

iOS 修改UITableView separator

作者: Magician | 来源:发表于2016-09-01 09:54 被阅读3824次

    separator style

    UITableView 中的 separator 有三种类型:

    
    typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
    
    UITableViewCellSeparatorStyleNone, // 没有分割线
    
    UITableViewCellSeparatorStyleSingleLine, // 单线,默认
    
    UITableViewCellSeparatorStyleSingleLineEtched  // 内嵌线,只有在 UITableView 为 group 类型时才起作用
    
    }
    
    

    通过修改 UITableView 的 separatorStyle 属性修改 separator 的类型,通过修改 separatorColor 属性修改 separator 的颜色,通过修改 separatorEffect( iOS 8.0 之后) 属性修改 separator 的显示特效。


    separator inset

    修改 separator 到边缘距离的时候,只需要修改 UITableView 的 separatorInset 属性就可以了,例如,当使用 xib 或 storyBoard 定制 cell 的时候,修改 tableview 的 Separator Inset 为 Custom,然后修改左右边距。但是最近突然发现这样完全不起作用了,即使手动修改 separatorInsetUIEdgeInsetsZero 也不起作用,具体什么原因没有细究,然后通过万能的百度,找到了解决方法:

    方法一:

    
    - (void)viewDidLoad {
    
    [super viewDidLoad];
    
    ...
    
    ...
    
    ...
    
    #pragma mark - a 调整view边距
    
    // 1.调整(iOS7以上)表格分隔线边距
    
    if ([self.MyTableView respondsToSelector:@selector(setSeparatorInset:)]) {
    
    self.MyTableView.separatorInset = UIEdgeInsetsZero;
    
    }
    
    // 2.调整(iOS8以上)view边距(或者在cell中设置preservesSuperviewLayoutMargins,二者等效)
    
    if ([self.MyTableView respondsToSelector:@selector(setLayoutMargins:)]) {
    
    self.MyTableView.layoutMargins = UIEdgeInsetsZero;
    
    }
    
    }
    
    #pragma mark - b 调整view边距
    
    //然后在willDisplayCell方法中加入如下代码:
    
    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    
    #pragma mark - b
    
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    
    [cell setLayoutMargins:UIEdgeInsetsZero];
    
    }
    
    }
    
    

    方法二:

    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    ...
    
    ...
    
    ...
    
    #pragma mark - a 调整view边距
    
    //1.调整(iOS8以上)tableView边距(与上面第2步等效,二选一即可)
    
    if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
    
    cell.preservesSuperviewLayoutMargins = NO;
    
    }
    
    //2.调整(iOS8以上)view边距
    
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    
    [cell setLayoutMargins:UIEdgeInsetsZero];
    
    }
    
    return cell;
    
    }
    
    #pragma mark - b 调整view边距
    
    //然后在willDisplayCell方法中加入如下代码:
    
    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    
    #pragma mark - b
    
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
    
    [cell setSeparatorInset:UIEdgeInsetsZero];
    
    }
    
    }
    
    

    相关文章

      网友评论

        本文标题:iOS 修改UITableView separator

        本文链接:https://www.haomeiwen.com/subject/rdpcettx.html