将子视图添加到零大小的UIView

时间:2012-11-09 10:18:15

标签: objective-c ios cocoa-touch uiview

这是我的问题,我在我的容器视图中添加了一个子视图,而container view的大小为(0,0),我希望我的subview的固定边距长度为4(我的container view中的top,right,left,bottom)。我可以在没有自定义layOutSubviews方法的情况下实现此目标。 我的代码就像是

- initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        mySubview = [[UIView alloc] init];
        //how to code here????
        [myContainerView addSubview:mySubview];
    }
    return self;
}

3 个答案:

答案 0 :(得分:1)

在iOS 6中,您应该可以使用约束来执行此操作,但在iOS 6之前,我不建议在具有非零帧之前添加子视图,或者如果您这样做,我建议使用{{1} } 要解决这个问题。在零尺寸的盒子里面只有4点边距是不可能的,因此它永远不会使用弹簧和支柱正确自动调整。

答案 1 :(得分:0)

- initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
        mySubview = [[UIView alloc] init];
        mySubview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        [myContainerView addSubview:mySubview];
    }
    return self;
}

答案 2 :(得分:0)

Rob Napier说的话......你自己-layoutSubviews会很简单:

-(void)layoutSubviews
{
    [ super layoutSubviews ] ;

    CGRect insetBounds = CGRectInset( self.bounds, 4.0f, 4.0f ) ;
    self.<<the inset subview>>.frame = insetBounds ;
}