在我的 Xcode 6.2 Swift 项目中,我无法弄清楚自动布局的问题(我也在使用大小类)...
在 Main.storyboard 中,我有一个视图,其中包含位于视图另一侧相同高度的aUIButton
和 a等界面元素。UISegmentedControl
我在 Interface Builder 中手动设置了所有约束(代码中没有),并且我的每个视图都工作得很好,除了在这种情况下(这个特殊问题只发生在我有长文本时)。
该按钮与视图的左边框对齐,其约束为:
- 前导空间到superview == 0
- 分段控制器的尾随空间 >= 8
- 其他界面元素的顶部和底部空间 == 8
分段控制器(有 2 个段)与视图的右边界对齐,其约束为:
- 到超级视图的尾随空间 == 0
- 按钮前导空格 >= 8
- 其他界面元素的顶部和底部空间 == 8
故事板中的按钮有一个标题“一些标题”,但实际上实际标题总是在代码中设置ViewWillAppear
:
myButton.setTitle(aStringThatSometimesIsPrettyLong, forState: .Normal)
我需要实现的视觉结果(在每个可能的设备和方向上)是我在代码中设置的 Button 标题,虽然它可以在界面中以合适的长度显示,但绝不应该影响分段控件的大小,压缩标签的两个部分。 所以,我希望分段控件的大小是固定的,并且我愿意接受这样一个事实,即 Button 标题(如果很长)可以用点截断。相反,无论我尝试什么(稍后我将解释我的尝试),当按钮标题很长时它不会被截断,而是分段控件被压缩,因此它的两个段标签被截断。
到目前为止,我已经分别和一起尝试了这些步骤:
- 向分段控件添加宽度最小约束。
- 增加(逐步,最多 1000)分段控件的内容压缩阻力,同时减少按钮的对应值。
- 增加(最多 1000)按钮的内容拥抱优先级。
- 我认为我无法为 Button 设置最大宽度,因为它可以根据代码中设置的标题进行拉伸,更重要的是,可以根据运行应用程序的设备进行拉伸。
我最大的问题是,无论我尝试什么,当我运行应用程序时,我总是得到相同的行为(按钮标题完全显示、未截断和压缩分段控制)。似乎添加这些约束并没有改变任何东西,而且自动布局之前从未发生在我身上......搞砸了很多,但没有改变添加约束,这是新的!
也许问题是按钮标题设置在ViewWillAppear
而不是在情节提要中,但是如果我无法在代码中设置其标题,我的应用程序将无法正常工作。
最后,但非常重要的是,我必须承认,虽然到目前为止我已经设法让 Auto-layout 和 Size 类在我的应用程序的所有(超过 10 个)视图控制器的所有设备和方向上工作,但实际上我从来没有为 Auto.layout 和 Size 类编写了一行代码:我已经在 Interface Builder 中完成了所有工作,如果可能的话,我真的很想继续这种方式。
任何建议都会非常非常感谢!
提前致谢,
切萨雷