问题描述
所以我在 Storyboard 中有两个并排的 UILabel.第二个标签应与第一个标签的右边缘对接(尾随约束为 1),但我还需要第一个标签(左侧的标签)将其宽度设置为等于其内容大小,除非它达到最大宽度.视觉上:
So I have two UILabels side by side in Storyboard. The second label should butt up against the right edge of the first one (trailing constraint of 1), but I also need the first label (the one on the left) to set it's width equal to it's content size unless it hits a max width. Visually:
|标记一个文本||标记两个文本|
|Label one text| |Label two text|
我需要以下约束:
1) 除非达到最大尺寸,否则标签一应调整宽度.
1) Label one should resize width wise unless it hits a max size.
2) 标签二应始终与标签一的右边缘对接
2) Label two should always be butted up against the right edge of label one
如何在 Storyboard 中进行设置?
How do I set this up in Storyboard?
推荐答案
- 在标签之间创建 1 点水平空间:按住 Control 键从
label2
拖动到label1
.从弹出窗口中选择水平间距.双击约束.将常数更改为 1. - 给
label1
一个最大宽度:选择label1
.转到顶部菜单栏,选择编辑器 > 引脚 > 宽度.双击约束.将关系更改为 <= 并将常量更改为最大宽度. - 垂直对齐标签:选择两个标签.转到顶部菜单栏,选择编辑器 > 对齐 > 垂直中心.
- 您仍然需要设置约束来定义标签在其容器视图中的位置.我把它留给你.我将
label1
固定在距根视图左边缘 32 点处,距顶部布局指南 34 点处. - 更新标签的框架,使其反映上述约束:转到画布右下角的菜单栏.点击解决自动布局问题"Tie-Fighter 按钮.在弹出窗口中选择更新所有帧...".
- Create the 1 point horizontal space between the labels: Control-drag from
label2
tolabel1
. Choose Horizontal Spacing from the pop-up. Double click the constraint. Change the constant to 1. - Give
label1
a max width: Selectlabel1
. Go to the top menu bar, select Editor > Pin > Width. Double click the constraint. Change the relationship to <= and change the constant to the max width. - Vertically align the labels: Select both labels. Go to the top menu bar, select Editor > Align > Vertical Centers.
- You still need to set constraints that define how your labels are positioned in their container view. I leave that up to you. I pinned
label1
32 points from the left edge of the root view and 34 points from top layout guide. - Update the frames of the labels so they reflect the above constraints: Go to the menu bar in the lower right-hand corner of the canvas. Tap the "Resolve Auto Layout Issues" Tie-Fighter button. Select "Update All Frames…" in the pop-up.
注意:请注意,我不必创建约束来使 label1
的宽度反映其内容大小.内容大小约束是自动生成的.
Note: Notice that I did not have to create constraints to make label1
's width reflect its content size. The content sizing constraints are generated automatically.
这篇关于自动布局以动态调整 uilabel 宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!