我目前正在返回UITableViewCell*
,看起来像这样
Image --- Text --- Button --- Image
我使用的代码看起来像这样
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [self.tableData objectAtIndex:indexPath.row]; //Add cell text
cell.imageView.image = [UIImage imageNamed:@"Test.jpeg"]; //Add cell image
float f = [cell.textLabel alignmentRectInsets].right;
UIButton *scanQRCodeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; //ADD UIButton
scanQRCodeButton.frame = CGRectMake(?, ?, 50.0f, 50.0f); //Coordinates for image view
[scanQRCodeButton setTitle:@"Hello" forState:UIControlStateNormal];
[cell.contentView addSubview:scanQRCodeButton];
UIImageView *preArrowImage =[[UIImageView alloc]init ]; //ADD Image View
preArrowImage.image =[UIImage imageNamed:@"Test.jpeg"];
preArrowImage.frame = CGRectMake(?, ?, 10, 30); //Coordinates for image view
[cell.contentView addSubview:preArrowImage];
return cell;
}
如前所述,这就是TableViewCell的样子
ImageA --- Text --- Button --- ImageB
我正在使用以下
在TableViewCell中对齐我的按钮 scanQRCodeButton.frame = CGRectMake(?, ?, 50.0f, 50.0f);
我正在使用以下
对齐UIImageView
preArrowImage.frame = CGRectMake(?, ?, 10, 30);
现在我的问题是,实际上我使用的是硬编码变量而不是?
。如何找出文本结束位置的x帧坐标,以便我可以利用该值而不是硬编码。
答案 0 :(得分:3)
首先,您的代码存在一些问题。每次重复使用单元格时,您都会将子视图添加到单元格contentView
中。该代码应该在if (cell == nil)
主体中,以便它只发生一次。当然,您需要通过使用带有专用变量的UITableViewCell
子类或通过设置标记来对这些子视图进行引用。
接下来,一般来说,你可以做类似的事情:
CGFloat labelRightEdge = CGRectGetMaxX(textLabel.frame);
我不确定它是否会在这种情况下起作用,并且当您尝试将内容与UITableViewCell
内置视图对齐时会导致问题。这些视图在内部布局,并不真正意味着与自定义子视图一起使用。我建议您通过创建UITableViewCell
子类来自己构建所有视图,然后根据layoutSubviews
的内容布置所有视图。