Xcode - 在界面构建器/故事板中可视地识别自定义视图

时间:2013-07-02 03:53:48

标签: xcode uiview interface-builder storyboard

如果您构建自定义UIView,并将其集成到界面构建器中的父视图/视图控制器中,则表示自定义视图的图形元素是不可见的,如果您未指定背景颜色(我不这样做)

有没有办法,仅在开发过程中,识别不同的自定义视图?区分它们的任何黑客/技巧?

我能想到的最接近的是在IB中设置背景颜色,然后在自定义视图的实现中删除背景。

2 个答案:

答案 0 :(得分:15)

Bounds Rectangles

您可能会发现边界矩形很有用。您可以通过转到菜单栏并选择编辑器>来打开它们。画布>显示边界矩形。

这是一个例子。我有一个用笔尖布局的视图(UICollectionViewCell子类)。它有一个单行标签,一个双行标签和一个自定义子视图。自定义子视图本身包含较小的自定义子视图。这是带有边界矩形的笔尖:

without bounds rectangles

这是与边界矩形相同的笔尖:

with bounds rectangles

背景颜色覆盖

这是另一种以设置背景颜色为基础的技术。此技术要求您的部署目标为iOS 5.0或更高版本。

如您所述,设置背景颜色以使视图在笔尖中可见:

background color

然后切换到Identity Inspector并在“用户定义的运行时属性”部分中添加backgroundColor。将其设置为您希望视图在运行时具有的背景颜色。例如,如果您希望它在运行时为白色:

backgroundColor in user defined runtime attributes

如果您想要清除背景颜色,可以将backgroundColor设置为不透明度为0的颜色,或者您可以将其设置为“Nil”而不是任何颜色:

backgroundColor set to Nil

答案 1 :(得分:2)

在Interface Builder中设置背景颜色的方法,但在代码中重置它是一种简单但有效的技术。两个改进:

  1. 如果您在单个故事板场景中有多个自定义视图,则可以使用IBOutletCollection无需以编程方式清除所有这些视图的背景颜色。因此,在Interface Builder中,为它们提供所有背景颜色,然后将给定场景的所有自定义视图添加到集合中。然后,您可以在一个语句中为所有这些设置背景颜色。因此,例如,如果您在一个场景中有十几个控件,则一个IBOutletCollection中的所有控件都被命名为viewsCollection

    @property (strong, nonatomic) IBOutletCollection(UIView) NSArray *viewsCollection;
    

    您可以在一个声明中清除所有这些背景颜色:

    [self.viewsCollection setValue:[UIColor clearColor] forKey:@"backgroundColor"];
    
  2. 通过在“身份检查器”的“文档”属性中设置“标签”,您还可以更轻松地在Interface Builder中识别自定义视图:

    label

    完成后,当您查看主面板左侧的文档大纲时,您会看到标签显示:

    document outline

    然后,使用文档大纲可以更轻松地识别场景中的各个视图。您可以使用我在此处执行的随机标签,也可以使用自定义视图类的名称,或者其他任何内容。