iOS自动布局 - 注入的自定义视图根据方向增加宽度

时间:2013-09-03 14:19:34

标签: ios xcode interface-builder autolayout

我有一个主页面视图设置。在这个内部,我有一个儿童视图,设置到一个插座。通过这个出口我正在页面中注入一个单独的xib文件。

我可以在此注入的xib上设置哪些属性,以便它随设备方向增长/缩小?直接在主视图中的子视图可以增长和缩小,但是此子视图的注入内容似乎始终是固定宽度。如何使它们延伸,即覆盖景观中的红色区域?

N.b。我是一名设计师,使用界面构建器来创建它。我希望能够通过接口buidler解决这个问题的答案。如果没有,那么欢迎代码答案(仅作为最后的手段)。

请参阅显示设置的图表: enter image description here

2 个答案:

答案 0 :(得分:4)

我很确定我认为当前的blueView不了解它的超级视图是正确的,所以你不能在xib中设置约束,并且需要在代码中完成。

要使用代码执行此操作,假设redView是上面图片中红色视图的Iboutlet。

使用你的笔尖创建你的blueView,但要确保translatesAutoresizingMaskIntoConstraints等于no:

    CustomView *blueView = [CustonView alloc] init]; // or what not
    // atached the xib, should really be done in init of CustomView
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"myXib" owner:self options:nil];
    UIView *mainView = [subviewArray objectAtIndex:0];
    [blueView addSubview:mainView];


    blueView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.redview addSubview:blueView]

添加约束:

    [self.redView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[blueView]|" options:0 metrics:nil views:@{@"blueView":blueView}]];
    [self.redView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[blueView]|" options:0 metrics:nil views:@{@"blueView":blueView}]];

Booranger

答案 1 :(得分:-2)

如果redView只有blueSubView,那么您可以按照以下方式访问它

UIView *blueView = [redView SubViews]ObjectAtIndex:0];

now you canset the frame of blueSubView.

[blueView setframe:CGRectMake(100,100,100,100)];

希望这会对你有帮助。