如何在单元格中设置 UILabel 相对于图像的位置
Posted
技术标签:
【中文标题】如何在单元格中设置 UILabel 相对于图像的位置【英文标题】:How to set position of UILabel relative to Image in a cell 【发布时间】:2014-11-14 22:00:18 【问题描述】:我创建了一个自定义单元格MatchCenterCell
,我在其中创建了一个名为priceLabel
的UILabel
,它位于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
使其与 textLabel
和 detailTextLabel
在其上方对齐?
【问题讨论】:
@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
如何在 UITableView 中设置 UILabel 的动作