uitableviewcell 分隔线未全宽显示

Posted

技术标签:

【中文标题】uitableviewcell 分隔线未全宽显示【英文标题】:uitableviewcell separator line not displaying in full width 【发布时间】:2015-12-22 14:40:14 【问题描述】:

我正在尝试显示 UITableview 自定义单元格。但我的 tableview 分隔符没有按预期显示。我附上截图。

我尝试制作 UIEdgeInsetZero,但没有成功。谁能帮我解决这个问题。

【问题讨论】:

你不能在故事板上显示约束并设置你的单元格 嗯,你需要将separatorInset 设置为 none 对于UITableView,并且在自定义单元格中,你需要放置距底部 1px 高度的 UIView。 【参考方案1】:

separatorInset 设置为UIEdgeInsetZero 对于ios 8 是不够的。您还应该将表格和单元格的layoutMargins 属性设置为UIEdgeInsetZero

【讨论】:

【参考方案2】:

请按自定义更改分隔符插图。谢谢。

【讨论】:

【参考方案3】:

试试这个:

cell.layoutMargins = UIEdgeInsetsZero;

cell.preservesSuperviewLayoutMargins = NO;

【讨论】:

【参考方案4】:

嘿,我得到了解决方案。

我在我的自定义 UITableViewCell 中覆盖 layoutSubviews 并且分隔符正确显示。

- (void)layoutSubviews 
[super layoutSubviews];

for (UIView *subview in self.contentView.superview.subviews) 
    if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) 
        subview.hidden = NO;
    
 

【讨论】:

【参考方案5】:
-(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];
    

【讨论】:

以上是关于uitableviewcell 分隔线未全宽显示的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp UITableViewCell全宽

UISplitViewControllers detailView 中的 presentModalViewController 未全屏显示视图

Listview 分隔符插入全宽

数据库关系线未显示在 datagrip 和 phpmyadmin 上

emacs 控制台模式 Org-mode 删除线未按预期显示

最后一个 UITableViewCell 没有分隔线