[英]add subview to custom uiview in interfacebuilder
我已经制作了一个由几个子视图组成的custom UIView
,并将其添加到Nib文件中。 视图正确加载,但是当我尝试从InterfaceBuilder将UIView
添加到custom UIView
时出现问题。 我希望添加的子视图进入自定义UIView
的最顶层子视图,但是毫不奇怪,这些子视图被添加到根custom UIView
。
我可以在custom UIView
的init
中做一些魔术,移动添加的视图。
还有其他选择吗?
是否有解决此问题的最佳做法的想法?
这似乎是正确的,因为当您将int nib文件添加到customView时,您无权访问其子subView,这意味着向该自定义视图添加视图将把它们添加到根视图,而不是子视图,
如您所说,您将必须采取一些变通办法来完成这项工作,例如使用标签定义视图,然后通过代码移动它们
您需要将“ Custom UIView
添加到subview of your Root view
并将根UIView的所有其他子subview of your Custom View
的subview of your Custom View
。这样您才能获得所需的内容。 您的IB层次结构应如下所示...
--->Root UIView
--->Custom UIView
--->UItextField
--->UIlabel
--->UiimageView
如果Custom UIView in a code
添加Custom UIView in a code
,则需要为所有子视图连接IBoutlet
,然后将它们全部作为subview of your custom view
的subview of your custom view
。
似乎没有任何聪明的解决方案。 相反,我最终像这样覆盖了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添加的视图的父视图的视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.