1

我有一个主页视图设置。在此我有一个设置到插座的子视图。通过这个出口,我将一个单独的 xib 文件注入到页面中。

我可以在这个注入的 xib 上设置哪些属性,以便它随着设备方向增长/收缩?直接在主视图中的子视图可以增长和缩小,但是这个子视图的注入内容似乎总是固定的宽度。我怎样才能让它们延伸,即覆盖景观中的红色区域?

注意,我是一名设计师,使用界面生成器来创建它。我将不胜感激允许我通过接口构建器解决此问题的答案。如果没有,那么欢迎使用代码答案(仅作为最后的手段)。

请参阅显示设置的图表: 在此处输入图像描述

4

2 回答 2

4

我很确定我认为当前的 blueView 不了解其父视图是正确的,因此您无法在 xib 本身中设置约束,并且需要在代码中进行。

要使用代码来实现,假设 redView 是上图中红色视图的 Iboutlet。

使用您的 nib 创建您的 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}]];

布朗厄尔

于 2013-09-03T14:40:21.777 回答
-2

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

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

now you canset the frame of blueSubView.

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

希望这会帮助你。

于 2013-09-03T14:27:41.063 回答