2016-08-05 7 views
0

У меня есть создать два UIViews и хотите программно реализовать визуальный язык Формат Autolayout, я хочу пользователя NSLayoutFormatAlignAllTop для обоих взглядов, Ниже мой код-Верхнее поле для использования Autolayout IOS

-(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]; 
} 

This is the result of my current code and result is correct, but i can see some warning message in log

Pelase предлагает, как я могу использовать опцию NSLayoutFormatAlignAllTop в моем текущем коде. Ошибка в журнале: Невозможно одновременно удовлетворить ограничениям. Возможно, по крайней мере одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. ( «», «» )

будет пытаться восстановить разбив ограничение

сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging в списке UIView, также могут быть полезны. 2016-08-05 20: 12: 41.763 FamilyApp [12908: 242194] Невозможно одновременно удовлетворить ограничения. Возможно, по крайней мере одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. ( "", "", "" )

будет пытаться восстановить разбив Constraint

сделать символическую точку останова в UIViewAlertForUnsatisfiableConstraints, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging в списке UIView, также могут быть полезны.

+0

Что вы пытаетесь достичь? Ваше первое ограничение говорит, что вы хотите, чтобы первое представление было выше второго, что не имеет смысла, если вы хотите, чтобы их вершины были выровнены. – dan

+0

Да, я знаю, где-то я ошибаюсь, пожалуйста, предложите мне, что является решением этого –

ответ

2

Вы одновременно говорите, что ваши взгляды находятся рядом друг с другом горизонтально и сверху друг на друга по вертикали. Это невозможно.

+0

Thnx ZaBlanc, я вижу, что есть конфликт. Пожалуйста, дайте мне знать, что является наиболее точным решением этих сценариев. Я просто хочу, чтобы –