autolayout - выяснение того, какие ограничения заменяют какие
Я возился с очень простым приложением, чтобы узнать, как использовать AVFoundation (программировал всего около 14 недель).
В комплект входит скриншот, чтобы помочь визуализировать мою проблему - мои вертикальные ограничения работают нормально, а мои горизонтальные ограничения отображаются для двух кнопок, которые у меня есть. Однако мои горизонтальные ограничения (которые я использую для центрирования нескольких объектов), похоже, не работают для двух надписей, которые есть под каждой кнопкой.
Интересно, проблема в том, что некоторые ограничения (возможно, способ, которым я их создал) имеют приоритет над другими и препятствуют тому, чтобы некоторые ограничения появлялись должным образом? На самом деле не уверен здесь.
-(void)setConstraints {
[self.view removeConstraints:self.view.constraints];
UIButton *cameraButton = self.cameraButton;
UILabel *camera = self.videoLabel;
UIButton *libraryButton = self.libraryButton;
UILabel *library = self.libraryLabel;
NSDictionary *views = NSDictionaryOfVariableBindings(camera, cameraButton, libraryButton, library);
//set up top button to be horizontally centered
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[cameraButton]-|"
options:0
metrics:nil
views:views];
//set up top button vertical from top of superview
constraints = [constraints arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat: @"V:|-175-[cameraButton]"
options:0
metrics:nil
views:views]];
//set up top button label to be horizontally centered
constraints = [constraints arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat: @"|-[camera]-|"
options:0
metrics:nil
views:views]];
//set up second button to be horizontally centered
constraints = [constraints arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat: @"|-[libraryButton]-|"
options:0
metrics:nil
views:views]];
//set up label for second button to be horizontally centered
constraints = [constraints arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat: @"|-[library]-|"
options:0
metrics:nil
views:views]];
//set up vertical constraints by spacing ALL objects appropriately
constraints = [constraints arrayByAddingObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat: @"V:[cameraButton]-[camera]-150-[libraryButton]-[library]"
options:0
metrics:nil
views:views]];
[self.view addConstraints:constraints];
}
1 ответ
Полагаю, вы хотели, чтобы эти виды выглядели по центру. Но это не то, что "|-[view]-|" ограничение будет делать. Что вы только что сказали представлению: "Я хочу, чтобы вы заполнили всю ширину вашего суперпредставления, по модулю заполнения по умолчанию". Если бы вы установили цвет фона на ваши метки, вы бы увидели, что они расширяют всю ширину вида.
Самое простое решение для вас - установить текстовое расположение по центру.