Autolayout:扩展到包含 UILabel + UIButton 的标题视图
Autolayout: Title View that Grows to Encompass UILabel + UIButton
我正在自定义我的视图控制器的标题视图,以便显示(从左到右):
- 一个与默认标题标签非常相似的 UILabel,
- 一个信息类型的 UIButton,紧跟在标签之后的固定距离处。
我预计,随着标签水平增长以容纳更长的文本,它会将按钮向右推得更远(标签和按钮之间的水平 space 保持不变),同时整个标题视图会自行调整大小包含标签和按钮,同时保持在导航栏的中央。
这是我所做的(界面生成器):
- 拖一个UINavigationItem到导航栏中;
- 拖一个UIView到导航项中,作为标题视图;
- 将标签和按钮拖到标题视图中,定位并调整大小。
设置以下约束:
标签 -> 标题视图:
- 领先 Space 到容器边距
- 在容器中垂直居中
按钮 -> 标题视图:
- 尾随 Space 到容器边距
- 在容器中垂直居中
(标题视图本身不受约束)
但是,标题视图保持固定大小。如果在运行时我设置的标题比故事板中设置的占位符长,它会被修剪(“...”):
如果我改为设置一个较短的,标签和按钮之间会出现额外的 space:
或者,如果我添加以下约束:
标签 -> 按钮:
1.水平间距
...现在按钮被标签完全隐藏了:
我怎样才能让标题视图水平增长(同时保持居中)以使其适合(灵活)标签和(固定)按钮,并保持它们之间的 space 固定?
导航项未设置为直接处理此问题。您需要使用您的约束来设置标题视图的框架,然后将其添加到 nab 项目。因此,每次更改文本时,您都需要通过移除视图、调整它的大小然后再次添加来做一些小动作。关键 API 是 systemLayoutSizeFittingSize
.
将按钮的约束更改为水平 space 为标签
按钮 -> 标题视图:
水平 Space 到标签
在容器中垂直居中
我正在自定义我的视图控制器的标题视图,以便显示(从左到右):
- 一个与默认标题标签非常相似的 UILabel,
- 一个信息类型的 UIButton,紧跟在标签之后的固定距离处。
我预计,随着标签水平增长以容纳更长的文本,它会将按钮向右推得更远(标签和按钮之间的水平 space 保持不变),同时整个标题视图会自行调整大小包含标签和按钮,同时保持在导航栏的中央。
这是我所做的(界面生成器):
- 拖一个UINavigationItem到导航栏中;
- 拖一个UIView到导航项中,作为标题视图;
- 将标签和按钮拖到标题视图中,定位并调整大小。
设置以下约束:
标签 -> 标题视图:
- 领先 Space 到容器边距
- 在容器中垂直居中
按钮 -> 标题视图:
- 尾随 Space 到容器边距
- 在容器中垂直居中
(标题视图本身不受约束)
但是,标题视图保持固定大小。如果在运行时我设置的标题比故事板中设置的占位符长,它会被修剪(“...”):
如果我改为设置一个较短的,标签和按钮之间会出现额外的 space:
或者,如果我添加以下约束:
标签 -> 按钮: 1.水平间距
...现在按钮被标签完全隐藏了:
我怎样才能让标题视图水平增长(同时保持居中)以使其适合(灵活)标签和(固定)按钮,并保持它们之间的 space 固定?
导航项未设置为直接处理此问题。您需要使用您的约束来设置标题视图的框架,然后将其添加到 nab 项目。因此,每次更改文本时,您都需要通过移除视图、调整它的大小然后再次添加来做一些小动作。关键 API 是 systemLayoutSizeFittingSize
.
将按钮的约束更改为水平 space 为标签
按钮 -> 标题视图:
水平 Space 到标签
在容器中垂直居中