0

在我的 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 中完成了所有工作,如果可能的话,我真的很想继续这种方式

任何建议都会非常非常感谢!

提前致谢,

切萨雷

4

1 回答 1

0

正如@KenThomases 指出的那样,我设置的约束实际上是正确的(实际上,由于他的回答,我发现了问题所在,现在它也可以使用较少的约束),但是分段控件没有得到它的内在内容大小。解决了这个问题,现在一切都很好。

于 2015-04-05T07:42:27.570 回答