我为table.tableHeaderView
创建了一个文字标签,我希望它与标准UITableViewCell.textLabel
中的文字保持一致。如何获得正确的X偏移?
cell.indentationWidth
是10和cell.indentationLevel = 0
,但这显然不是全部。在cellForRowAtIndexPath:
和willDisplayCell:
tableView方法中,UITableViewCell.textLabel
的X原点为0。
我可以提前确定cell.textLabel
的X原点吗?或者我必须得到它,然后找到相对于tableView的原点,然后更新我的headerLabel的X原点?
在此处下载sample project。
@implementation ViewController {
UILabel *headerTextLabel;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"myId"];
CGRect headerFrame = CGRectMake(0, 0, self.tableView.bounds.size.width, 100); // arbitrary height
UIView *header = [[UIView alloc] initWithFrame:headerFrame];
header.backgroundColor = [UIColor lightGrayColor];
self.tableView.tableHeaderView = header;
CGFloat xHeaderLabel = 0; // What do I set this to?
// header text label should be left-aligned and match the cell text
headerTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(xHeaderLabel, 0, 300, 40)]; // arbitrary header size
headerTextLabel.text = @"Header text -- align with cells";
headerTextLabel.backgroundColor = [UIColor orangeColor];
[header addSubview:headerTextLabel];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myId"];
cell.textLabel.text = [NSString stringWithFormat:@"Cell %ld", (long)indexPath.row];
cell.textLabel.backgroundColor = [UIColor redColor];
return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.textLabel.backgroundColor = [UIColor redColor];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}
答案 0 :(得分:1)
查看UITableView
上的分隔符插页:
NSLog(self.tableView.separatorInset.left); // -> 15.0