ios - 如何通过在iOS中对齐顶部边缘来水平放置两个标签?
问题描述
我想创建如下所示的自定义视图。
如您所见,它由标题和价格标签组成。标题可以有百万行,但其顶部边缘应与价格标签对齐。看似简单的设计,却有数百种解决方案。我尝试了它们中的每一个,但我的标题标签没有增长,因为最后有点(numberOfLines = 0 没有帮助)。以下是我创建这样一个设计的方法:
我创建了带有顶部、前导、尾随价格标签、底部约束的 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,分布填充,垂直)。这种方法的结果:标题标签没有增长。如果它有大文本,它的末尾只有一行带点。
- 第二种方法是创建stackView(水平,间距8,分布填充,对齐顶部)。我设置对齐顶部以对齐标签的顶部边缘。结果与方法#1 相同。
如何解决这个问题呢?我哪里错了?似乎我在这里没有看到自动布局理论的核心内容。
解决方案
new height constraint
为标题标签添加一个
关系:greater than equal to
contant:一些常量(可能是 20 或基于您的字体大小和内容)。
我希望这能解决你的问题
推荐阅读
- c# - 将复杂的数据结构从 C# 传递到本机 dll
- install4j - 如何添加在使用 install4j 安装应用程序后调用的自定义选项?
- docbook - 从 asciidoc 转换时,有没有办法在 docbook 中不忽略自定义属性?
- tensorflow - Keras 的模型评估期望的训练集维度而不是测试集维度
- python-3.x - 如何使用 urllib 和 Python3 访问 JSON 元素
- angular - ThreeJS / Angular - “场景未定义”
- angular - NativeScript Angular ngClass 不起作用
- reactjs - React-Leaflet 在开发环境中渲染本地图块
- c++ - 如何获取指针类型而不是 UNKNOWN
- akka-http - 如何为从 ByteString 创建的 HttpRequest/HttpEntity 设置块大小