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,标题中自定义单元格的边距与行不同,自动布局?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 中自定义 TableViewCell 中的自动布局问题