如果您构建自定义UIView,并将其集成到界面构建器中的父视图/视图控制器中,则表示自定义视图的图形元素是不可见的,如果您未指定背景颜色(我不这样做)
有没有办法,仅在开发过程中,识别不同的自定义视图?区分它们的任何黑客/技巧?
我能想到的最接近的是在IB中设置背景颜色,然后在自定义视图的实现中删除背景。
答案 0 :(得分:15)
您可能会发现边界矩形很有用。您可以通过转到菜单栏并选择编辑器>来打开它们。画布>显示边界矩形。
这是一个例子。我有一个用笔尖布局的视图(UICollectionViewCell
子类)。它有一个单行标签,一个双行标签和一个自定义子视图。自定义子视图本身包含较小的自定义子视图。这是带有边界矩形的笔尖:
这是与边界矩形相同的笔尖:
这是另一种以设置背景颜色为基础的技术。此技术要求您的部署目标为iOS 5.0或更高版本。
如您所述,设置背景颜色以使视图在笔尖中可见:
然后切换到Identity Inspector并在“用户定义的运行时属性”部分中添加backgroundColor
。将其设置为您希望视图在运行时具有的背景颜色。例如,如果您希望它在运行时为白色:
如果您想要清除背景颜色,可以将backgroundColor
设置为不透明度为0的颜色,或者您可以将其设置为“Nil”而不是任何颜色:
答案 1 :(得分:2)
在Interface Builder中设置背景颜色的方法,但在代码中重置它是一种简单但有效的技术。两个改进:
如果您在单个故事板场景中有多个自定义视图,则可以使用IBOutletCollection
无需以编程方式清除所有这些视图的背景颜色。因此,在Interface Builder中,为它们提供所有背景颜色,然后将给定场景的所有自定义视图添加到集合中。然后,您可以在一个语句中为所有这些设置背景颜色。因此,例如,如果您在一个场景中有十几个控件,则一个IBOutletCollection
中的所有控件都被命名为viewsCollection
:
@property (strong, nonatomic) IBOutletCollection(UIView) NSArray *viewsCollection;
您可以在一个声明中清除所有这些背景颜色:
[self.viewsCollection setValue:[UIColor clearColor] forKey:@"backgroundColor"];
通过在“身份检查器”的“文档”属性中设置“标签”,您还可以更轻松地在Interface Builder中识别自定义视图:
完成后,当您查看主面板左侧的文档大纲时,您会看到标签显示:
然后,使用文档大纲可以更轻松地识别场景中的各个视图。您可以使用我在此处执行的随机标签,也可以使用自定义视图类的名称,或者其他任何内容。