Xcode 8 属性“隐藏”不会在 Interface Builder 中隐藏视图

Posted

技术标签:

【中文标题】Xcode 8 属性“隐藏”不会在 Interface Builder 中隐藏视图【英文标题】:Xcode 8 attribute "hidden" does not hide view in Interface Builder 【发布时间】:2016-09-20 14:08:02 【问题描述】:

似乎 Apple 改变了 Interface Builder 在 Xcode 8 中的行为方式?因为当我在 Interface Builder 中的视图上的 Attributes Inspector 中检查 hidden 时,该视图仍然可见。

这使得处理视图变得非常乏味,其中某些视图需要是具有最高“z 值”的视图,即最前面的视图。

除了将它们的顺序向右更改(即更改它们的“z值”)之外,还有其他方法可以在此示例中显示绿色视图吗

在下面的图像中隐藏被选中,但我仍然没有看到下面的绿色视图。你可以下载这个trivial project at github

项目运行时,确实显示了绿色视图,但问题是在Interface Builder中工作时很烦人。

我错过了什么吗?

【问题讨论】:

【参考方案1】:

我对此有相同的看法,我也认为这很烦人。我和他们让你选择在运行之前更新实际的故事板,但他们没有,现在我们必须处理它。

虽然有一个快速的替代选项。隐藏不会在情节提要中更新,但 alpha 会。如果更改 alpha,它将在情节提要中更新,因此,如果您想查看其背后的视图,只需将 alpha 更改为 0。您可以随时轻松将其更改回来,或者如果您在代码中进行更改,而不是取消隐藏视图,只需更改代码,因此 alpha 设置为 1。

【讨论】:

感谢您的精彩提示。 如果元素是 UIStackView 的一部分,那么 Alpha 的事情就不会真正起作用。使用 hidden 时,该元素将在运行时看起来好像它不是堆栈视图的一部分,但仅更改 alpha 0 将使其不可见,但仍会占用堆栈视图中的空间。这使得这种解决方法在 IB 中无效。【参考方案2】:

取消选中红色视图的installed 复选框怎么样? 这也有一个缺陷,您必须记住重新安装它,但您不必更改视图的 z 顺序。

【讨论】:

【参考方案3】:

这是故意的。我们不希望视图对编辑器you 隐藏,因为它会在应用程序运行时隐藏。您可以使用 Shift-Control-Click 红色视图(或使用屏幕截图左侧的文档大纲)轻松选择覆盖视图,例如绿色视图。

【讨论】:

但是如何在不改变 Z 顺序的情况下看到绿色视图在 Interface Builder 中的样子?红色视图挡住了它... 可以更改 Z 顺序。只需将绿色视图带到前面。在左侧的文档大纲中,将其向下拖动到红色视图下方。或者如我之前所说,在画布中选择它,然后选择置于前面。完成后记得把它放回去! 但这正是我不想想要做的,我不想记住把它放回去......容易忘记! 我知道你不想想要做什么。我告诉你你做什么。我的回答是真实的,而不是让你兴奋不已。如果您不喜欢它,请向 Apple 提出改进请求——不要责怪 呵呵,如果不可能的话,那就不是……这是苹果恕我直言的设计缺陷。

以上是关于Xcode 8 属性“隐藏”不会在 Interface Builder 中隐藏视图的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4.3为按钮设置属性

如果 Swift 3/Xcode 8 中的“活动”列是“否”,如何隐藏单元格

在 ios 8 中以横向模式隐藏并在 xCode 6 中发布 ios 8 后尝试在 ios 7 中正常工作的状态栏问题

Xcode:检查 UIButton 是不是隐藏,使用 NSUserDefaults

自动布局不会在 iOS 8-Xcode 6 中立即更新帧

约束/自动布局栏隐藏,Xcode 6