我已经创建了一个由多个子视图组成的custom UIView
并将其添加到Nib文件中。
视图正确加载,但是当我尝试从InterfaceBuilder向UIView
添加custom UIView
时出现问题。
我希望添加的子视图转到我的自定义UIView
的最顶层子视图,但不出所料,子视图会添加到根custom UIView
。
我可以在init
的{{1}}中做一些魔术,移动添加的视图。
还有其他选择吗?
有什么想法解决这个问题的最佳做法?
答案 0 :(得分:0)
这似乎是正确的,因为当您添加customView时,在nib文件中,您无法访问其子子视图,这意味着将视图添加到此自定义视图,将它们添加到根视图而不是子视图,
正如您所说,您必须采取一些解决方法才能使这项工作成功,例如使用标签定义视图,然后按代码移动它们
答案 1 :(得分:0)
您需要将Custom UIView
添加到subview of your Root view
以及根UIView的所有其他子视图作为subview of your Custom View
。这样您就可以获得您想要的内容。
您的IB层次结构应该如下...
--->Root UIView
--->Custom UIView
--->UItextField
--->UIlabel
--->UiimageView
如果您添加Custom UIView in a code
,则需要为所有子视图关联IBoutlet
,然后将其全部设为subview of your custom view
。
答案 2 :(得分:0)
似乎没有任何聪明的解决方案。
相反,我最终覆盖layoutSubviews
这样:
-(void)layoutSubviews
{
[super layoutSubviews];
for (UIView *subview in self.subviews){
if (![self.internalViews containsObject:subview]) {
[subview removeFromSuperview];
CGRect f =subview.frame;
f.origin.y += self.frame.origin.y;
subview.frame = f;
[self.contentContainer addSubview:subview];
}
}
}
构建视图我将所有子视图添加到数组internalViews
。 contentContainer
是用作所有InterfaceBuilder添加视图的父视图的视图。