ios - 如何在大量重叠的 UIView 中清楚地看到特定 View

标签 ios xcode interface-builder

当 View Controller (VC) 有成群的 View 和 subview 时,修改 subview 变得非常困难,因为我什至无法完全看到它(它隐藏在其他 subview 后面)。例如,请查看我的一个 VC 的当前状态:view controller having lots of views and subviews in xcode

我看不到突出显示的“Congratulations - UILabel”或其 UIView。

有什么方法可以让我清楚地看到特定 View (可能位于所有其他 View 的顶部)?

通常,我将一个 UIView 拖放到另一个虚拟空白 VC 上,在该 VC 上完全设计具有所有约束的 View ,最后将其拖放到我的实际 VC 上。这在大多数情况下都有效,但对我来说似乎是一种低效的方法。 我观察到在 iOS6 中看到重叠 View 曾经更容易,但在 iOS7 中却非常困难。我缺少 iOS7 Interface Builder 中的任何功能吗?感谢您的宝贵时间。

更新:会 Spark Inspector帮帮我?我是开发新手,所以不想浪费时间尝试和理解新插件,如果它不能帮助我实现我想要的。谢谢。

最佳答案

这被广泛认为是 Xcode 新 Storyboards 功能的弱点之一。它们非常适合需要大量简单 Controller 的应用程序,但当您的界面变得复杂时,它们就会变得难以使用。大多数有经验的开发人员在某些地方使用 Storyboard,在其他地方使用单独的 Controller XIB,具体取决于他们正在构建的内容。

解决问题的方法如下:

第 1 步。将 View Controller 从 Storyboard 分离到它自己的 XIB 中

  • 从"file"菜单中选择“新建文件”,然后选择一个空 XIB 文件(从“用户界面”部分)。将其命名为“YourExactVCClassName.xib”。

  • 转到您的 Storyboard。复制您的 View Controller 的整个 View ,然后将其删除。

  • 将 View Controller 粘贴到您的新 XIB 中。将“文件所有者”的类更改为您的 View Controller ,并通过从 View 到文件所有者绘制导出来设置它的“ View ”属性。

When your app runs, it will try to instantiate the view controller from your storyboard. When it realizes there's no view in the storyboard for that controller, it will automatically find the file MyViewController.xib and load it from there.

第 2 步。将主视图的内容组织成有意义的分离 View 。

  • 在您上面的示例中,看起来您对游戏的不同状态(游戏结束、高分等)有不同的 View 。获取每个 View 并将它们从主视图中删除。有了你的 Controller 在它自己的 XIB 文件中,你可以将 View 拖到 Controller 周围的空白处。您拖出的每个 View 都成为您可以轻松设计和查看的 XIB 文件中的顶级对象。 您不再局限于 iPhone 5 大小的工作区。

  • 为每个分离的顶级 View 创建 IBOutlet,以便您可以在 Controller 中引用它们。

  • viewDidLoad 中,以编程方式将每个单独的 View 添加到您的主视图。请注意,您可能想要设置它们的框架,使它们中的一些不可见等。您必须编写更多代码,但对于易于维护的 XIB,这通常是值得的。

关于ios - 如何在大量重叠的 UIView 中清楚地看到特定 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812731/

相关文章:

ios - swift,如何从 UIImageView 获取当前显示的图像文件名

ios - 使用容器 View 时,Delegate 为 nil

iphone - 根据首选项显示/隐藏 iphone UI 元素 - 如何?

ios - IB 中 3.5 外形尺寸的不同 View

ios - 使用自定义字段 Swift 从数组中搜索

ios - 通过 cocoapods 在没有插件的情况下使用 Crashlytics

swift - <未知> :0: error: type 'Key' constrained to non-protocol type 'String'

ios - swift 3 : Joining multiple Strings with "+" operator no longer possible

ios - 为什么 IBAction 类型默认为 AnyObject?

iphone - 为什么自定义 TableViewCell 不需要文件所有者?