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:
。