iOS,标题中自定义单元格的边距与行不同,自动布局?

Posted

技术标签:

【中文标题】iOS,标题中自定义单元格的边距与行不同,自动布局?【英文标题】:iOS, margin on custom cells different in header than row, with autolayout? 【发布时间】:2015-05-04 21:54:59 【问题描述】:

我有一个问题。我对表格行使用 nib 文件,对节标题使用相同的 nib。我还在自定义单元格上使用自动布局。

虽然我使用不同的文字和颜色等。

我的想法是,我可以对齐列等。

但是,部分标题似乎比单元格宽,尽管背景似乎是全宽。

我尝试了各种方法来设置宽度,认为它的设置方式不同,有边距。

这是我的代码....

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:
   (NSInteger)section 

    CGFloat w = [UIScreen mainScreen].bounds.size.width;
    HeaderSectionReportView *customHeaderView = [[HeaderSectionReportView alloc] 
         initWithFrame:CGRectMake(0.0, 0.0, w, 20.0) ....

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ReportCell" 
         owner:self options:nil];
    ReportCell *customView  = (ReportCell *)[nib objectAtIndex:0];

    customView.descriptionValue.backgroundColor = [UIColor clearColor];
    //snip
    customView.frame = CGRectMake(0,0, w,customView.frame.size.height);
    [customHeaderView addSubview:customView];
    return customHeaderView;

//

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
    (NSIndexPath *)indexPath 

    static NSString *CellIdentifier = @"ReportCell";
    ReportCell *cell = (ReportCell *) [tableView 
         dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) 
        NSArray *topLevelObjects = [[NSBundle mainBundle] 
            loadNibNamed:@"ReportCell" owner:nil options:nil];

        for (id currentObject in topLevelObjects) 
            if ([currentObject isKindOfClass:[UITableViewCell class]]) 
                cell = ((ReportCell *) currentObject);
                break;
            
        
    

    CGFloat w = [UIScreen mainScreen].bounds.size.width;
    cell.frame = CGRectMake(0,0, w,cell.frame.size.height);    
    cell.descriptionValue.text = desc;

这也是我的自动布局约束

【问题讨论】:

尝试设置约束,而不从底部的“pin”菜单中选中“constrain to margins”按钮。 @pandarencodemaster 谢谢你解决了它:) 很高兴听到这个消息!我不确定是否必须将其添加为答案? 【参考方案1】:

标题和单元格的宽度由tableView 处理。所以设置cell.frame 不会有任何区别。

因此,您对单元格的限制似乎有点偏离。它们都应该设置为 0 并且没有任何边距(禁用/取消勾选相对于边距)。

希望这能解决您的问题。如果您需要更多帮助,请告诉我

【讨论】:

以上是关于iOS,标题中自定义单元格的边距与行不同,自动布局?的主要内容,如果未能解决你的问题,请参考以下文章

具有自动布局的自定义单元格的动态高度

html中单元格间距与单元格边距的区别

iOS 7 中自定义 TableViewCell 中的自动布局问题

当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?

在iOS中如何正确的实现行间距与行高

使用堆栈视图和自动布局创建自定义 UITableViewCell