1

我以编程方式创建了两个 UIView 并希望实现 Visual Format 语言 Autolayout ,我想为两个视图使用 NSLayoutFormatAlignAllTop ,下面是我的代码-

-(void)doCodeForWidthAndHeight
{
    UIView *myView = [[UIView alloc] init];
    myView.backgroundColor = [UIColor redColor];
    myView.translatesAutoresizingMaskIntoConstraints = NO;  //This part hung me up
    [self.view addSubview:myView];

    UIView *mySecondView = [[UIView alloc] init];
    mySecondView.backgroundColor = [UIColor greenColor];
    mySecondView.translatesAutoresizingMaskIntoConstraints = NO;  //This part hung me up
    [self.view addSubview:mySecondView];

    NSDictionary *viewsDictionary = @{@"myView":myView,@"mySecond":mySecondView};

    // 1. Create a dictionary of views
    NSArray *constraint_POS_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-200-[myView(100)]-[mySecond(100)]" options:0 metrics:nil views:viewsDictionary];

    NSArray *constraint_POS_H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[myView(40)]-40-[mySecond]-30-|" options:0 metrics:nil views:viewsDictionary];

    NSArray *topMargin = [NSLayoutConstraint constraintsWithVisualFormat:@"[myView]-[mySecond]" options:NSLayoutFormatAlignAllTop metrics:nil views:viewsDictionary];

    [self.view addConstraints:constraint_POS_H];
    [self.view addConstraints:constraint_POS_V];
    [self.view addConstraints:topMargin];
}

这是我当前代码的结果,结果是正确的,但我可以在日志中看到一些警告消息

Pelase 建议我如何在当前代码中使用 NSLayoutFormatAlignAllTop 选项。日志中的错误无法同时满足约束。以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的;(2) 找到添加了一个或多个不需要的约束的代码并修复它。(“”,“”)

将尝试通过打破约束来恢复

在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点以在调试器中捕获它。中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。2016-08-05 20:12:41.763 FamilyApp [12908:242194] 无法同时满足约束。以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的;(2) 找到添加了一个或多个不需要的约束的代码并修复它。(“”、“”、“”)

将尝试通过打破约束来恢复

在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点以在调试器中捕获它。中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。

4

1 回答 1

2

您同时说您的视图在水平方向上彼此相邻并且在垂直方向上彼此重叠。这不可能。

于 2016-08-05T15:34:17.343 回答