То, что я пытаюсь выполнить, кажется довольно простым, но я был на этом целый день, и я не могу понять это.Манипулирование иерархии представлений с использованием XIB и автоматической компоновки
У меня есть раскадровка (которая еще не использует автоматическую компоновку) со сценой, имеющей выпадающий вид прокрутки. У меня также есть 2 XIB, которые я создаю в коде. Первый XIB (A) имеет UILabel
и общий номер UIView
. Второй XIB (B) имеет только 5 UIButton
s в + компоновке. Конечная цель - загрузить B в общий вид в A (по горизонтали и по умолчанию) под меткой) и сделать A взятием всей страницы в прокрутке.
Когда я изменяю размер представления XIB A, размер общего вида расширяется и сжимается, но всегда остается значением по умолчанию ниже метки. Когда я изменяю размер представления XIB B, расположение кнопок остается центрированным (это то, что я хочу). Это поведение, которое я хочу.
С помощью следующего кода, однако, он не работает:
View A *viewA = [[ViewA alloc] initWithFrame:CGRectZero];
viewA.textLabel.text = @"A label with a rather long text";
ViewB *viewB = [[ViewB alloc] initWithFrame:CGRectZero];
[viewA setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewB setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewA.customView addSubview:viewB]; // customView is the generic view
Это дает мне следующее:
(Белая область является вид прокрутки, красная область вид A, вид зеленой зоны B.)
Я попытался добавить ограничение, которое должно позволить виду B взять всю ширину своего супервизора:
[viewA.customView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[viewB]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(viewB)]];
Но это приводит к следующим образом:
Что я могу сделать, чтобы получить кнопки, сосредоточенные в зеленой зоне? Мне все равно, если зеленая зона полностью покрыта красной областью, или если красная область просто сосредоточена над зеленой зоной.
Авто-макет включен в XIB, но раскадровка по-прежнему работает на распорках и пружинах. –
Вы проверили, соответствует ли рамка вашего зеленого вида нужного размера, она выходит за пределы видимой области, а кнопки, возможно, центрированы – ceekay