填满堆栈视图的按钮

时间:2016-12-17 18:08:57

标签: ios button view

我跟随iOS上的Apple dev tutorial,到了必须使用堆栈视图实现自定义控件的部分。但是,当我到达应该向我显示一个红色方块的部分时,我会添加到堆栈视图中的按钮,我将整个堆栈视图显示为红色(按钮填充整个堆栈视图)。 我的属性如下:

atrib

尽管遵循了这封信的教程,我做错了什么?提前谢谢。

编辑:

我使用这些约束:

    button.translatesAutoresizingMaskIntoConstraints = false
    button.heightAnchor.constraint(equalToConstant: 24.0).isActive = true
    button.widthAnchor.constraint(equalToConstant: 14.0).isActive = true

5 个答案:

答案 0 :(得分:4)

这是具有一个排列的子视图的堆栈视图的预期行为。如果您在堆栈视图上放置了约束,使其大于其排列的子视图,那么这些子视图将展开以填充堆栈视图的大小。或者,如果堆栈视图没有约束,它将符合其排列的子视图所规定的大小。无论哪种方式,使用一个排列的子视图,子视图将占用整个堆栈视图。

在本教程中,堆栈视图没有约束,因此它缩小到按钮上设置的约束的大小,因为它是UIStackView中唯一排列的子视图。您应该打开大小检查器堆栈视图以确保没有设置约束。有关堆栈视图和布局的更多信息,您应该看到here.

答案 1 :(得分:3)

好的伙计我明白了。我将水平堆栈放在视图中的错误位置。我有同样的问题,我使用了对齐 - >顶部,但只修复了我的横向而不是我的宽度。真正的问题是我将水平堆栈视图放在错误的位置。它表示“并将其拖入故事板场景,以便它在图像视图下方的堆栈视图中”,当我按照正确大小放置它时。 correct location for horizontal stack

答案 2 :(得分:1)

我意识到这个问题已经接受了答案,但是,在遵循本教程时遇到了同样的问题。无论这是否是预期的行为,遵循本教程都会在模拟器中运行应用程序时产生不同的界面。

对于约束条件并不完全正确,因此 setupButtons()中设置的约束未实现。

button.heightAnchor.constraint(equalToConstant: 20.0).isActive = true
button.widthAnchor.constraint(equalToConstant: 20.0).isActive = true

要解决此问题,我必须将堆栈视图allignment属性从fill更改为top,如下所示:

enter image description here

这修复了界面,使其与教程屏幕截图相同。希望这可以帮助其他人在将来遇到这个问题。

答案 3 :(得分:0)

在Xcode的最新版本(v 9.0.1作为或写入)中,它会在调试器输出中抱怨。它提到你可能有一个不受欢迎的约束。如果从故事板中删除约束,则代码应按预期工作。

答案 4 :(得分:0)

我也遵循本教程,并且遇到了同样的问题。 我通过停用标记的屏幕截图中的红色condisins解决了该问题。 我上传了另一个屏幕截图,以向您显示我的其他设置。 我是初学者,很幸运,我想分享这个运气^^ other settings marked screenshoot

enter image description here