Вопрос

в iOS6, я использую автолаю.

    .
  • У меня есть 2 просмотра V1 и V2 программно созданы.
  • v2 добавляется в виде subView to v1
  • Ограничения для V1 уже созданы программически (не отображаются здесь).
  • Я хочу, чтобы V1 и V2 быть одинаковым размером, и я хочу, чтобы V2 был помещен на вершину V1, именно горизонтальный и вертикальный сопоставление центра, так что V2 точно на вершине V1

<Сильный> Вопрос:

    .
  • Как я могу добиться этого (желательно, используя визуальный формат, если его невозможно предложить альтернативный подход)?

<Сильный> код - приведено ниже моя попытка, но однако не предоставляет желаемый выход.- никаких ошибок не бросается.V1 установлен правильно, но V2 - один левый угол V1

Примечание - я объяснил ниже в комментариях, что я пытаюсь сделать.

[v1 addSubView:v2];

v1.translatesAutoresizingMaskIntoConstraints        = NO;
v2.translatesAutoresizingMaskIntoConstraints        = NO;

NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(v1,
                                                              v2);

//I wanted v1 and v2 to be of the same height and wanted the center Y to be aligned together
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[v2(==v1)]"
                                                                         options:NSLayoutFormatAlignAllCenterY
                                                                         metrics:nil
                                                                           views:viewDictionary];


//I wanted v1 and v2 to be of the same height and wanted the center X to be aligned together
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[v2(==v1)]"
                                                                       options:NSLayoutFormatAlignAllCenterX
                                                                       metrics:nil
                                                                         views:viewDictionary];

[v1 addConstraints:horizontalConstraints];
[v1 addConstraints:verticalConstraints];
.

Это было полезно?

Решение

не должен просто эта работа?

NSMutableArray *constraints = [NSMutableArray new];

constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|[v2]|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(v2)];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v2]|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(v2)];
[v1 addConstraints:constraints];
.

Что это делает, это делает v2 растягиваться высотой и шириной до размера его руководства, что в этом случае является V1 и позиционирует его, так что его прямо сверху его руководящества.

Кажется, что в вашем случае вам не нужно выровнять View Centerx и в центре.В противном случае я не понимаю контекст вашего вопроса правильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top