我正在自定义 View Controller 的标题 View ,以便显示(从左到右):
- 一个与默认标题标签非常相似的 UILabel,
- 一个信息类型的 UIButton,放置在标签后面固定距离处。
我希望,随着标签水平增长以容纳更长的文本,它会将按钮推向更远的右侧(标签和按钮之间的水平空间保持不变),而整个标题 View 会自行调整大小以包含标签和按钮,同时保持在导航栏的中心。
这就是我所做的(界面生成器):
- 将 UINavigationItem 拖入导航栏;
- 将一个 UIView 拖到导航项中,作为标题 View ;
- 将标签和按钮拖入标题 View 、定位和调整大小。
设置以下约束:
标签 -> 标题 View :
- 领先于容器边距
- 在容器中垂直居中
按钮 -> 标题 View :
- 容器边距的尾随空间
- 在容器中垂直居中
(标题 View 本身不受约束)
但是,标题 View 保持固定大小。如果在运行时我设置的标题比 Storyboard 中设置的占位符长,它会被修剪(“...”):
如果我设置一个较短的,标签和按钮之间会出现额外的空间:
或者,如果我添加以下约束:
标签 -> 按钮:
1.水平间距
...现在按钮完全被标签隐藏了:
我怎样才能让标题 View 水平增长(同时保持居中),以便它适合(灵活)标签和(固定)按钮,并保持它们之间的空间固定?
Best Answer-推荐答案 strong>
导航项未设置为直接处理此问题。您需要使用约束来设置标题 View 的框架,然后将其添加到 nab 项。因此,每次更改文本时,您都需要通过删除 View 、调整其大小然后再次添加它来做一些小 Action 。关键API是systemLayoutSizeFittingSize 。
关于ios - 自动布局:包含 UILabel + UIButton 的标题 View ,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/32901644/
|