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