隐藏stackview中的第一个子视图和其他在iOS 10.2上消失但不是11

Posted

技术标签:

【中文标题】隐藏stackview中的第一个子视图和其他在iOS 10.2上消失但不是11【英文标题】:Hide first subview in stackview and other disappears on iOS 10.2 but not 11 【发布时间】:2017-12-01 16:01:32 【问题描述】:

对这个感到困惑......

我在 tableview 单元格中有一个 stackview。 stackview (Center, Equal Spacing) 有两个子 stackview, 左stackview(Fill,Fill)有一个UIButton(infoButton)和UILabel(Description) 右边的stackview(填充,填充)只有UILabel

当我设置 infoButton.isHidden = true 时,描述在 ios 10.2 上无处可见。在 iOS 11.1 上,它按预期工作。

感谢观看!

图片:左侧是 iOS 11.1,右侧是 iOS 10.2。

附加信息:

if (input.Help == "")
    aCell.infoButton.isHidden = true
 else 
    aCell.infoButton.isHidden = false
    aCell.infoButton.tag = i
    aCell.infoButton.isUserInteractionEnabled = true
    aCell.infoButton.addGestureRecognizer(tap)

已解决:我将堆栈视图(同时包含按钮和标签)更改为对齐“中心”而不是“填充”。在 View Debugger 中观察到 Stackview 高度已变为 0(感谢 Matt 将我指向调试器!)

【问题讨论】:

当然,系统之间的差异很有趣,但仅仅看一些应用程序的屏幕截图并不能说什么。你能澄清一点吗?不清楚屏幕截图中的内容。无论如何,我们需要的不仅仅是屏幕截图:要重现,需要堆栈视图、设置和约束的整个层次结构。请参阅***.com/help/mcve — 另外,您知道 View Debugger,对吧?它会告诉你描述去了哪里以及为什么。例如,堆栈视图本身可能正在消失(因为它的布局有问题)。 我在上面添加了一些代码,但不知道视图调试器 - 我现在就去看看,谢谢! 查看调试器的工作就像一个魅力!当我将按钮设置为隐藏时,看起来堆栈视图缩小到高度 0。我将 Alignment 更改为 Center 而不是 Full 并且成功了。感谢您的帮助! 万岁!感谢您的反馈。 (而且我还必须为自己正确猜测堆栈视图本身正在消失而拍拍自己的后背。)据我估计,这个问题可能对其他人有用,所以请随时回答您自己的问题,并在 48几个小时你甚至可以接受自己的答案(在 Stack Overflow 上都是完全合法的)。 谢谢,马特!当它允许我时,我会将其标记为答案。 【参考方案1】:

将堆栈视图(同时包含按钮和标签)更改为对齐“中心”而不是“填充”。

当堆栈的一个子视图设置为隐藏时,堆栈视图高度已更改为 0,如在视图调试器中观察到的(感谢 Matt 将我指向调试器!)。

【讨论】:

对我来说,这是一些“相同的宽度/高度”约束,我必须从 stackview 中显示的按钮中删除它们【参考方案2】:

我在将标签和文本字段放置在包含另一个标签作为标题的堆栈视图中时遇到了类似的问题。想要隐藏/显示文本字段和标签以进行编辑(例如:名字标签和名字文本字段。如果编辑将仅显示文本字段,否则仅显示标签)。

Title:      First Name (always visible)
Label:      John (hidden when editing)
Text Field: John (hidden when not editing)

我的问题:当显示标签时,它与标题标签一起消失了。

我的解决方案:将名称标签和文本字段嵌入到堆栈视图中

希望这会有所帮助:)

【讨论】:

这个答案太笼统了,一些代码加上解释会更有用。

以上是关于隐藏stackview中的第一个子视图和其他在iOS 10.2上消失但不是11的主要内容,如果未能解决你的问题,请参考以下文章

Stackview中的iOS 10方形UIIMageView在隐藏时会破坏自动布局

选择 stackView 上的哪个子视图将拉伸(以编程方式)

参考模态中的第二个子视图

带有约束的滚动视图中的iOS Swift stackview

iOS Swift:以编程方式安装和卸载视图

iOS:隐藏 UIStackView 子视图