2013-08-19 4 views
3

Начиная с разработки Android Я пытаюсь подражать некоторым макетам, которые я сделал в прошлых приложениях, но теперь на iPhone и iPad. Что-то, что я часто использую в Android, - это макет. Я много искал, читал книги, блоги, и я думал, что в iOS 6 возможно что-то подобное, но я ничего не смог найти. Я также пробовал смотреть тонну учебных пособий по авто макету в iOS, но я действительно не нашел ничего, что могло бы выполнить мою задачу. Это сводит меня с ума. Итак ... есть ли iOS эквивалент веса макета Android?Что такое iOS эквивалент веса макета Android?

+0

Возможно, вы найдете API, доступный в [UIView + AutoLayout] (https://github.com/smileyborg/UIView-AutoLayout). – smileyborg

ответ

0

Возможно, вы можете эмулировать это поведение с помощью системы автоматической компоновки в iOS. Обратите внимание, однако, что для этого требуется iOS 6.0+. Причина, по которой это так долго не существовала, заключается в том, что она не имеет смысла на платформе iOS (все отношения были одинаковыми на всех устройствах). Используя NSLayoutConstraint, вы можете попытаться ограничить ширину/высоту вашего представления определенным процентом своего супервизора. Однако я никогда не пытался сделать это сам. Однако для обучения автозапуску потребуется немного времени для инвестиций (ничего экстремального, а может быть, часа или двух). Я предлагаю вам различные видеоролики WWDC.

Я не знаю, если он будет работать именно так, как я описал, но если это возможно, вы, несомненно, будет использовать либо NSLayoutConstraint или преимущественную layoutSubviews на вашем настраиваемое представление, чтобы сделать вашу логику макета вручную всякий раз, когда точка зрения изменен размер или его макет недействителен. Этот метод будет работать на всех версиях iOS, но требует больше кода для написания.

+0

Я ориентируюсь только на iOS 6, но в конструкторе интерфейса я ничего не могу найти, что позволит мне выполнить это: http://stackoverflow.com/questions/18174980/creating-a-percentage-based-ios-layout – EGHDK

+0

Вы не сможете использовать конструктор интерфейса для этого. Проценты, основанные на процентах, должны выполняться в коде. – borrrden

+0

Вы серьезно? Это - ум, ошеломляющий меня. Почти бесполезный конструктор интерфейса рендеринга. Что, если бы я хотел два вида, а верхний вид был бы «заданной» высотой (200), а затем я хотел, чтобы другое представление заняло оставшуюся часть доступного пространства.Могу ли я сделать это в построителе интерфейса? – EGHDK

1

«Макеты компоновки» - это подмножество того, что может сделать система Auto-layout iOS 6. К сожалению, установка ограничений в файлах nib - это боль в XCode 4. Я рекомендую устанавливать ограничения в nib только в том случае, если у вас есть доступ к предварительным просмотром XCode 5 dev.

Но сценарий вы упомянули может быть сделан без автоматической раскладки на всех:

Что делать, если я хотел два вида, и вид сверху будет «установить» высоту (200), а затем Я хотел, чтобы другое представление заняло оставшуюся часть . Могу ли я сделать это в построителе интерфейса?

Да, вы можете. Просто зайдите на размер инспектора и установить вид сверху в Спрингз и-распорки для enter image description here

и дно, чтобы

enter image description here

(обратите внимание на красные кресты.)

UPDATE:

OK, если вы действительно хотите использовать автоспуск:

UIView *topView = ...; 
UIView *bottomView = ...; 
NSDictionary *bindings = NSDictionaryOfVariableBindings(topView, bottomView); 
[self.view addConstraints: 
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[topView(200)][bottomView]|" 
             options:(NSLayoutFormatAlignAllLeft | NSLayoutFormatAlignAllRight) 
             metrics:nil 
              views:bindings]]; 
+0

Я не вижу окно автоматической калибровки в инспекторе размеров. Любая идея, почему это так? – EGHDK

+0

@EGHDK Это старая модель. Он использует метод пружин и распорок. Если вы хотите использовать этот метод, сначала необходимо отключить авто-макет. – borrrden

+0

Хм ... так ты думаешь, я могу сделать это без «пружин и распорок», но с автоматической компоновкой? «this», как в «Что делать, если мне нужны два вида, а верхний вид будет« заданной »высотой (200), а затем я хотел, чтобы другое представление заняло оставшееся пространство. Могу ли я сделать это в построителе интерфейса ?» – EGHDK