yos autolayout визуальный формат - выравнивание
-
12-12-2019 - |
Вопрос
в 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 и в центре.В противном случае я не понимаю контекст вашего вопроса правильно.
Не связан с StackOverflow