首页 > 解决方案 > 如何通过在iOS中对齐顶部边缘来水平放置两个标签?

问题描述

我想创建如下所示的自定义视图。

在此处输入图像描述

如您所见,它由标题和价格标签组成。标题可以有百万行,但其顶部边缘应与价格标签对齐。看似简单的设计,却有数百种解决方案。我尝试了它们中的每一个,但我的标题标签没有增长,因为最后有点(numberOfLines = 0 没有帮助)。以下是我创建这样一个设计的方法:

  1. 我创建了带有顶部、前导、尾随价格标签、底部约束的 titleLabel。此外,我创建了带有顶部和尾部约束的价格标签,只是为了对齐它们的顶部边缘。我给价格标签分配了抗压和拥抱优先级,因为它更重要,不应该被破坏。如果需要,这里是代码:

     addSubview(titleLabel)
     addSubview(priceLabel)
     titleLabel.snp.makeConstraints { make in
         make.leading.equalToSuperview().offset(16)
         make.trailing.lessThanOrEqualTo(priceLabel.snp.leading).offset(-8)
         make.top.equalToSuperview()
         make.bottom.equalToSuperview()
     }
     priceLabel.snp.makeConstraints { make in
         make.trailing.equalToSuperview().offset(-16)
         make.top.equalTo(titleLabel.snp.top)
     }
    

我创建了单独的自定义视图,因为我想在StackView中使用它(间距 8,分布填充,垂直)。这种方法的结果:标题标签没有增长。如果它有大文本,它的末尾只有一行带点。

  1. 第二种方法是创建stackView(水平,间距8,分布填充,对齐顶部)。我设置对齐顶部以对齐标签的顶部边缘。结果与方法#1 相同。

如何解决这个问题呢?我哪里错了?似乎我在这里没有看到自动布局理论的核心内容。

标签: iosswiftautolayoutsnapkit

解决方案


new height constraint为标题标签添加一个
关系greater than equal to
contant:一些常量(可能是 20 或基于您的字体大小和内容)。

我希望这能解决你的问题


推荐阅读