Swift Stackview在隐藏按钮的情况下意外运行
我正在使用xcode 7.3.1界面生成器,并在stackview中将uilabel和uibutton放在彼此相邻的位置 UIabel左,UIButton右 一旦我将它们嵌入stackview中,uilabel将展开以填充整个stackview,而按钮根本不可见 UILabel将展开以填充整个堆栈视图 作为故障排除的一部分,我试图通过添加宽度约束使UILabel变窄,添加后,我收到一个错误,即宽度与UILable.leading align to:Superview和UILable.trailing align to:Superview冲突。我没有设置这两个约束,也没有在其他StackView中遇到此问题 试试这个:Swift Stackview在隐藏按钮的情况下意外运行,swift,xcode,autolayout,Swift,Xcode,Autolayout,我正在使用xcode 7.3.1界面生成器,并在stackview中将uilabel和uibutton放在彼此相邻的位置 UIabel左,UIButton右 一旦我将它们嵌入stackview中,uilabel将展开以填充整个stackview,而按钮根本不可见 UILabel将展开以填充整个堆栈视图 作为故障排除的一部分,我试图通过添加宽度约束使UILabel变窄,添加后,我收到一个错误,即宽度与UILable.leading align to:Superview和UILable.tra
- 删除所有约束
- 将堆栈放置在需要的位置
- 使用水平和垂直对齐(使用当前画布值)
- 应用宽度和高度约束
- 轴:水平
- 间距:16
- 对齐:填充
- 分配:填充
- 版面边距:自定义(顶部:16,底部:16,左侧:16,右侧:16)
如果你添加一个屏幕截图,显示你希望你的视图看起来像什么(包括超级视图等),它将更容易提供帮助。您当前隐藏了大量信息,因此很难提供帮助。我找到了此问题的最终原因 问题是“查看信息”按钮设置为“隐藏”。这是因为除非满足特定情况,否则按钮不会出现。由于按钮设置为“隐藏”,堆栈视图会自动调整约束,使其不显示 解决方法是取消选中“隐藏”,按照我想要的方式安排所有内容,然后重新选中按钮的“隐藏”
虽然我能够创建新的标签和按钮并将它们放入堆栈视图中,但当我将按钮标记为“隐藏”时,它们很快就遇到了相同的问题,因此下面的答案确实帮助我找到了原因。您只需执行对齐=填充和分布以按比例填充即可。堆栈视图就是这样工作的。查找教程。“关于雷·温德里奇的报道非常精彩。@Fogmeister谢谢你的反馈。也许我的问题不清楚。在单项目堆栈视图中,或者如果项目是堆栈视图中一行中的唯一内容,我希望它的前缘和后缘与视图对齐。但是,在本例中,视图中有两个项目,其中一个项目被设置为与视图的前导和尾随对齐,超出了第二个项目。如果您有屏幕截图或代码向我们显示,会更加清晰。但是,如果您在堆栈视图中添加或查看约束,那么您基本上误解了堆栈视图的用途。您将堆栈视图的属性设置为什么?再次显示屏幕截图。@Fogmeister在子视图上没有任何约束一旦我将UILabel和UIButton嵌入堆栈视图,UILabel将展开以填充堆栈视图,UIButton的宽度将变为0。添加了stackview属性和标识面板的屏幕截图。对于堆栈视图,您不应添加任何约束。这就是使用堆栈视图的意义所在。@Fogmeister事实并非总是如此。您可能希望手动将某些内容放置在内部。@courtsimas否,实际上不是。如果您希望以不同的方式放置它,则可以嵌套堆栈视图,或者不使用堆栈视图。当您添加手动约束时,它与堆栈视图添加的约束冲突,并可能导致问题。这适用于全新的标签和按钮,但如果我尝试使用现有的标签和按钮(即使没有约束),它也会出现与前面所述相同的问题。我的目标是让标签和按钮在堆栈视图中水平排列。我更喜欢使用现有的对象,因为有很多代码已经绑定到它们。我将使用整个视图进行更新。@CSjunkie你所说的“与它们相关的大量代码”是什么意思?这些都是观点。它们是长方形。界面生成器中没有代码。我将使用视图的其余部分进行更新,有一些按钮与web服务交互,这些按钮可以更改它们的文本和可见性。我可以将此功能重新定向到新按钮上,但我不想这样做。@CSjunkie这实际上是一个简单的按ctrl键拖动来实现的例子。不管怎样。无论需要多长时间,工作的方式都比不工作的方式好得多。:-)听起来你的情况和这个问题不一样。如果你发布了一个问题,请链接到这里,我会看看我是否能帮上忙。