Я немного борюсь с визуальными ограничениями в своем приложении для iOS.Visual Constraints with Hidden Views
У меня есть четыре UIViews. Одна из них всегда «заголовок» или вид сверху, а остальные три очереди являются видимыми под ней, как показано ниже:
+-------------------+
| HeaderView |
+-------------------+
| View2|View3|View4 |
+-------------------+
только один из View2, View3 или view4 видна в то время, и другие скрыты, когда они не используются.
Теперь, используя регулярные NSLayoutConstraints
, я могу получить это работает очень хорошо:
- Все виды имеют ограничения для ведущих и хвостовых запас, чтобы соответствовать хост-супер-вид.
- HeaderView имеет TopMargin для соответствия супер-представлению хозяев.
- Все виды имеют ограничения на их высоту. HeaderView - 100, а View2, View3 и View4 - 25, 50 и 75 соответственно.
- View2, View3 и View4 имеют ограничения, которые устанавливают верхнюю часть, равную нижней части заголовка.
- (я не забочусь ни о каком нижней ограничивающей для View2, View3 или view4. - их высоты фиксированы, а пустое пространство под ними управляется в другом месте)
Итак, я пытаюсь преобразовать это к визуальным ограничениям. Вот то, что я до сих пор для горизонтальных ограничений, и это здорово:
@"H:|-0-[HeaderView]-0-|"
@"H:|-0-[View2]-0-|"
@"H:|-0-[View3]-0-|"
@"H:|-0-[View4]-0-|"
Теперь, вертикальные ограничения, когда я попадаю в неприятности:
Я попытался следующее:
@"V:|-0-[HeaderView(100)]-0-[View2(25)]-0-[View3(50)]-0-[View4(75)]"
И Я также попытался разделить это:
@"V:|-0-[HeaderView(100)-0-[View2(25)]"
@"V:|-0-[HeaderView(100)-0-[View2(50)]"
@"V:|-0-[HeaderView(100)-0-[View2(75)]"
Проблема в том, что вертикальная компоновка никогда не бывает правильным - почти всегда, View2, View3 или View4 будут лежать прямо над HeaderView, а не ниже.
Любые предложения по очистке и исправлению моих вертикальных макетов?
(100 он не должен быть (100) дружище ??? –
Да, это была опечатка !! спасибо за предложение .. :) – Lion
еще один сомнения :) Arent вы все применения ограничение 25 30 75 height на том же представлении View2, когда требовалось применить его для View1, View2 и View 3 :) Я знаю, что это была его часть, но это неправильно, не так ли? Аффект в том, что высота View2 будет 75 где, так как другие высоты будут неявными, поэтому установлены на 0 :) –