繁体   English   中英

在interfacebuilder中将子视图添加到自定义uiview

[英]add subview to custom uiview in interfacebuilder

我已经制作了一个由几个子视图组成的custom UIView ,并将其添加到Nib文件中。 视图正确加载,但是当我尝试从InterfaceBuilder将UIView添加到custom UIView时出现问题。 我希望添加的子视图进入自定义UIView的最顶层子视图,但是毫不奇怪,这些子视图被添加到根custom UIView

我可以在custom UIViewinit中做一些魔术,移动添加的视图。

还有其他选择吗?

是否有解决此问题的最佳做法的想法?

这似乎是正确的,因为当您将int nib文件添加到customView时,您无权访问其子subView,这意味着向该自定义视图添加视图将把它们添加到根视图,而不是子视图,

如您所说,您将必须采取一些变通办法来完成这项工作,例如使用标签定义视图,然后通过代码移动它们

您需要将“ Custom UIView添加到subview of your Root view并将根UIView的所有其他子subview of your Custom Viewsubview 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 viewsubview 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM