如何在单元格中设置 UILabel 相对于图像的位置

Posted

技术标签:

【中文标题】如何在单元格中设置 UILabel 相对于图像的位置【英文标题】:How to set position of UILabel relative to Image in a cell 【发布时间】:2014-11-14 22:00:18 【问题描述】:

我创建了一个自定义单元格MatchCenterCell,我在其中创建了一个名为priceLabelUILabel,它位于UITableView 的一个单元格内部。目前的设置方式是这样的:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
        self.PriceLabel  = [[ UILabel alloc]initWithFrame:CGRectMake(90, 35, 70, 40)];
    
    return self;

但是,这会导致问题,因为每个单元格的图像大小各不相同,因此 x 坐标为 90 意味着有时它会错位,如下面的“最佳匹配”标签所示:

如何使 x 坐标相对于 cell.imageView 使其与 textLabeldetailTextLabel 在其上方对齐?

【问题讨论】:

@rdelmar 说了什么。您可以直接向标签添加约束,以确保它相对于图像垂直和水平居中。 【参考方案1】:

您可以按照 cmets 中的建议使用 auto-layout,也可以按如下方式覆盖布局子视图:

- (void)layoutSubviews()

    [super layoutSubViews];
    self.detailTextLabel.y = 0;
    self.detailTextLabel.x = self.imageView.right + 10; 
    self.detailTextLabel.height = self.contentView.height;
    self.detailTextLabel.width = self.contentView.width - self.detailTextLabel.x;

上面使用了CKUITools,它在做自定义布局时增加了一些方便的方法。

【讨论】:

我的UITableView 是通过编程方式初始化的,而不是通过情节提要。在这种情况下我将如何使用自动布局?我会将您发布的代码放在哪里? 您仍然可以通过编程方式使用自动布局,但上面的示例不是自动布局只是覆盖了您自定义单元格中的 layoutSubviews。 .

以上是关于如何在单元格中设置 UILabel 相对于图像的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UICollectionViewCell 中设置 UILabel

如何在 ImagePicker 控制器的单元格类中设置图像

如何在 UITableView 中设置 UILabel 的动作

在tableview ios中使用UILabel的单元格的动态高度

如何在表格视图单元格的内容视图中居中 UILabel?

如何在 TableView Cell 中设置随机图像