Реализация автоматической компоновки в iOS с использованием VFL

#ios #objective-c #xcode #autolayout #ios-autolayout

#iOS #objective-c #xcode #автозаполнение #ios-автозапуск

Вопрос:

Я использую автоматическую компоновку с использованием языка визуального форматирования.

В горизонтальном режиме я могу включить обе метки в одну строку кода следующим образом

  constraints  = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[Btn1]-10-[dummyLabel1]-10-[Lbl2]-10-[dummyLabel2]-10-[Btn2]" options:0 metrics:metrics views:views];
[self.view addConstraints:constraints];
  

Мне пришлось использовать две строки ограничений, подобных этой, чтобы разместить два объекта в вертикальном режиме.

  constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[dummyLabel]-16-[fixedLabel]-13-|" options:0 metrics:metrics views:views];
[self.view addConstraints:constraints];

constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[dummyLabel2]-16-[fixedLabel]-13-|" options:0 metrics:metrics views:views];
[self.view addConstraints:constraints];
  

Могу ли я каким-либо образом сделать это в одной строке и для вертикального режима, используя VFL?

Комментарии:

1. Не уверен, чего вы пытаетесь достичь, делая это в коде, но если вам нужно настроить ограничение, созданное в interface builder после инициализации представления, вы можете перетащить выход из ограничения на свой ViewController и изменить его программно позже.

2. В настоящее время для этого класса не реализован файл XIB. И я пытаюсь проверить, можно ли это сделать в самом VFL. Спасибо

Ответ №1:

Нет. Существует множество различных способов автоматической компоновки: в Interface Builder, с использованием VFL, создания NSLayoutConstraints программно или с использованием привязок макета. У каждого есть свои недостатки. Это одно из мест, где VFL выходит из строя.