需要有关以编程方式创建自动布局约束的帮助

时间:2015-12-16 07:13:35

标签: ios objective-c uiview nslayoutconstraint ios-autolayout

这是我第一次尝试以编程方式创建auto layouts constraints,这是我的代码

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *view1 = [[UIView alloc]init];
    view1.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:view1];
    [view1 setTranslatesAutoresizingMaskIntoConstraints:NO];

    NSDictionary *views = NSDictionaryOfVariableBindings(view1);

    NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[view1]-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:views];

    NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[view1]-|" options:0 metrics:nil views:views];

    [view1 addConstraints:constraints];

    [view1 addConstraints:verticalConstraints];
}

这是我在代码中尝试做的事情。

enter image description here

我正在犯这个巨大的错误

  

2015-12-16 12:13:59.254 test5b [1138:430691]视图层次结构不是   为约束做准备:何时   添加到视图中,约束的项必须是其后代   视图(或视图本身)。如果约束需要,这将崩溃   在组装视图层次结构之前解析。打断    - [UIView(UIConstraintBasedLayout)_viewHierarchyUnpreparedForConstraint:]进行调试。 2015-12-16 12:13:59.259 test5b [1138:430691]查看层次结构未准备好   约束。约束:     容器层次结构:>在容器层次结构中找不到视图:>那视图的超级视图:; layer => 2015-12-16 12:13:59.260 test5b [1138:430691] *   由于未捕获的异常'NSGenericException'而终止应用,   原因:'无法在视图上安装约束。是约束   引用视图子树外的东西?那是   非法。约束:   视图产品:>”   * 第一次抛出调用堆栈:(0x1829f4f5c 0x1975e7f80 0x1829f4ea4 0x183890ef4 0x18804c620 0x18804c428 0x18804c2d0 0x18804c194   0x188056504 0x183890aa0 0x18805330c 0x188056420 0x1000d65f0   0x187f63a0c 0x187fd2fcc 0x187fd2f68 0x1881f494c 0x188200de4   0x1829ac48c 0x1829abdc4 0x1829a9d28 0x1828d8dc0 0x18da2c088   0x187fb2f60 0x1000d6ab8 0x197e128b8)libc ++ abi.dylib:终止于   NSException(lldb)

类型的未捕获异常

1 个答案:

答案 0 :(得分:3)

self.view添加约束。替换以下内容:

[view1 addConstraints:constraints];
[view1 addConstraints:verticalConstraints];

[self.view addConstraints:constraints];
[self.view addConstraints:verticalConstraints];