Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 需要有关以编程方式创建自动布局约束的帮助吗_Ios_Objective C_Uiview_Nslayoutconstraint_Ios Autolayout - Fatal编程技术网

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

Ios 需要有关以编程方式创建自动布局约束的帮助吗,ios,objective-c,uiview,nslayoutconstraint,ios-autolayout,Ios,Objective C,Uiview,Nslayoutconstraint,Ios Autolayout,这是我第一次尝试以编程方式创建自动布局约束,下面是我的代码 - (void)viewDidLoad { [super viewDidLoad]; UIView *view1 = [[UIView alloc]init]; view1.backgroundColor = [UIColor lightGrayColor]; [self.view addSubview:view1]; [view1 setTranslatesAutoresizingMaskIn

这是我第一次尝试以编程方式创建
自动布局约束
,下面是我的代码

- (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];
}
这就是我在代码中试图做的

我犯了一个巨大的错误

2015-12-16 12:13:59.254测试5B[1138:430691]视图层次结构不正确 为约束做好准备:何时 添加到视图中时,约束的项必须是该视图的后代 视图(或视图本身)。如果需要修改约束,这将崩溃 在组装视图层次结构之前,必须先解析。打断 -[UIView(UIConstraintBasedLayout)\要调试的视图层次结构UnpreparedForConstraint:]。2015-12-16 12:13:59.259 test5b[1138:430691]视图层次结构未准备好 约束。约束条件: 容器层次结构:>在容器层次结构中找不到视图:>该视图的superview:;图层=>2015-12-16 12:13:59.260测试5b[1138:430691]* 由于未捕获异常“NSGenericeException”而终止应用程序, 原因:“无法在视图上安装约束。”。约束是否存在 从视图的子树之外引用某个内容?那是 非法的。约束条件: 视图:>' *第一次抛出调用堆栈:(0x1829f4f5c 0x1975e7f80 0x1829f4ea4 0x183890ef4 0x18804c620 0x18804c428 0x18804c2d0 0x18804c194 0x188056504 0x183890aa0 0x18805330c 0x188056420 0x1000d65f0 0x187f63a0c 0x187fd2fcc 0x187fd2f68 0x1881f494c 0x188200de4 0x1829ac48c 0x1829ADC4 0x1829AD28 0x1828d8dc0 0x18da2c088 0x187fb2f60 0x1000d6ab8 0x197e128b8)libc++abi.dylib:终止于 NSException(lldb)类型的未捕获异常


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

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


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

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


感谢它的工作,但为什么self.view,我想这些都是在view1像我们在故事板ctrl+拖动从view1到超级视图。。。提供一个很好的理由来解释为什么我们要给自我添加约束。视图1不在视图层次结构中。为什么视图1不在层次结构中我执行了[self.view addsubview:View1],如果我在情节提要中应用相同的方法并选择了视图1,则在“大小检查器”中会显示视图1的所有约束。您正在设置约束,以便视图知道如何布局其子视图。视图不在其子视图层次结构中…从iOS 8开始,您不应再使用
addConstraints:
。使用
+[NSLayoutConstraint activateConstraints:
-[NSLayoutConstraint setActive:
。感谢它起作用了,但为什么要使用self.view,我希望它们像在故事板中一样出现在view1上ctrl+从view1拖动到超级视图。。。提供一个很好的理由来解释为什么我们要给自我添加约束。视图1不在视图层次结构中。为什么视图1不在层次结构中我执行了[self.view addsubview:View1],如果我在情节提要中应用相同的方法并选择了视图1,则在“大小检查器”中会显示视图1的所有约束。您正在设置约束,以便视图知道如何布局其子视图。视图不在其子视图层次结构中…从iOS 8开始,您不应再使用
addConstraints:
。使用
+[NSLayoutConstraint activateConstraints:
-[NSLayoutConstraint setActive: