1

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

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

有其他选择吗?

关于解决这个问题的最佳实践有什么想法吗?

4

3 回答 3

0

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

正如您所说,您将不得不采取一些解决方法来完成这项工作,例如使用标签来定义视图,然后通过代码移动它们

于 2012-06-26T06:17:28.553 回答
0

您需要将根 UIView的Custom UIViewto和所有其他子视图添加为. 这样您就可以得到您想要的。您的 IB 层次结构应如下所示...subview of your Root viewsubview of your Custom View

 --->Root UIView
      --->Custom UIView
           --->UItextField
           --->UIlabel
           --->UiimageView

如果您添加您的Custom UIView in a code,那么您需要连接IBoutlet所有子视图,然后将它们全部作为subview of your custom view.

于 2012-06-26T06:25:24.010 回答
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 添加视图的父视图。

于 2012-06-26T08:51:35.363 回答