当视图控制器(VC)具有大量视图和子视图时,修改子视图变得非常困难,因为我甚至无法完全看到它(它隐藏在其他子视图后面)。例如,请查看我的一个VC的当前状态:
我无法看到突出显示的“祝贺 - UILabel”或其UIView。
有没有办法可以清楚地看到特定的视图(可能位于所有其他视图的顶部)?
一般情况下,我将UIView拖放到不同的虚拟空白VC上,在具有所有约束的VC上完全设计视图,最后将其拖放回我的实际VC。这大部分时间都适用,但对我来说似乎是一种低效的方法。 我观察到在iOS6中看到重叠的视图比较容易,但在iOS7中非常困难。我缺少iOS7 Interface Builder中的任何功能吗?谢谢你宝贵的时间。
更新:Spark Inspector会帮助我吗?我是开发的新手,所以不要浪费我的时间尝试和理解新的插件,如果它不能帮助我实现我想要的。感谢。
答案 0 :(得分:2)
这被广泛认为是Xcode新故事板功能的弱点之一。它们非常适合需要大量简单控制器的应用程序,但是当接口变得复杂时,它们变得难以使用。大多数经验丰富的开发人员在某些地方使用Storyboard,在其他地方使用单独的控制器XIB,具体取决于他们正在构建的内容。
以下是解决问题的方法:
步骤1.将View Controller从故事板中分解为自己的XIB
从“文件”菜单中,选择“新建文件”,然后选择“空XIB”文件(来自“用户界面”部分)。将其命名为“YourExactVCClassName.xib”。
转到您的故事板。复制View Controller的整个视图,然后将其删除。
将View Controller粘贴到新的XIB中。将“文件所有者”的类更改为您的视图控制器,并通过从视图中将插座绘制到文件所有者来设置它的“视图”属性。
当您的应用运行时,它会尝试实例化视图控制器 从你的故事板。当它意识到没有视图时 该控制器的故事板,它将自动找到该文件 MyViewController.xib并从那里加载它。
步骤2.将主视图的内容整理成有意义的分离视图。
在上面的示例中,看起来您对游戏的不同状态(游戏结束,高分等)有不同的视图。从主视图中取出每个视图并将其删除。将控制器放在自己的XIB文件中,只需将视图拖到控制器周围的空白处即可。您拖出的每个视图都会成为XIB文件中的顶级对象,您可以轻松地进行设计和查看。 您已不再使用iPhone-5大小的工作区了。
为每个独立的顶级视图创建IBOutlets,以便您可以在控制器中引用它们。
在viewDidLoad
中,以编程方式将每个单独的视图添加到主视图中。请注意,您可能希望设置其框架,使其中一些框架不可见等。您必须编写更多代码,但对于易于维护的XIB而言,这通常是值得的。