Я бы хотел перетащить компонент / представление из одного супервизора в другой в построителе интерфейса Xcode без сброса его кадра / положения.
Поведение Xcode по умолчанию при этом похоже на центрирование перемещаемого представления по вертикали и горизонтали в новом супервизоре, сохраняя при этом его размеры. Это крайне неприятно, поскольку означает, что представление необходимо вручную переместить в его новом суперпредставлении. Но я правильно разместил его перед перемещением, поэтому я бы хотел, чтобы Xcode просто запомнил все атрибуты своего фрейма, а не только его ширину / высоту. Это возможно?
Ответы:
Другое решение:
источник
Я нашел кое-что, что может вам помочь!
Задача состоит в том, чтобы перегруппировать «дочерние представления» в «родительские представления», чтобы они стали иерархически дочерними по отношению к родительскому представлению и сохранили физические позиции на дисплее, как и до действия.
Во-первых, настройте родительский вид так, чтобы он физически занимал область дочерних видов. Во-вторых, убедитесь, что все дочерние элементы находятся под ним в списке просмотра.
Теперь выберите всех дочерних элементов с помощью мыши и переместите их, например, на один пиксель вверх и на один пиксель вниз (просто чтобы сказать IB, есть некоторые изменения). После этого отпустите детей, и они волшебным образом станут детьми родителя и сохранят свои позиции на виду.
У меня это работает на OSX 10.8.2 и Xcode 4.6.
Удачи!
источник
Мне удалось сэкономить много времени, потраченного на изменение положения, и я сделал следующее:
Не очень элегантно, не понимаю, почему XCode не поддерживает его с Shift или чем-то еще.
источник
Выберите все элементы управления, которые вы хотите переместить из одного UIView в другой UiView (не может быть дочерним) или ScrollView
Вырезать / Копировать
Теперь, после перетаскивания нового UIView / ScrollView в существующий UIView, не щелкайте один раз, чтобы выбрать его, вместо этого ДВОЙНО щелкните новый UIView / ScrollView и вставьте все элементы управления.
Разница в расстоянии между всеми элементами управления останется неизменной, но, возможно, вам придется снова изменить положение элементов управления. Так что не щелкайте в любом месте, пока не переместите их, просто переместите все элементы управления с помощью стрелок навигации, поскольку все они уже выбраны, или вы можете выбрать их снова.
ПРИМЕЧАНИЕ: я использую XCode 4.2
источник
Я сделал что-то похожее на решение Степана, без использования раскадровки. В IB при открытом представлении ViewController:
источник
Это лучшее решение для копирования подпредставлений в другое представление с сохранением позиций:
На шаге 6 будет удалено внедренное представление, и вы скопируете только подвиды.
источник
Xcode Interface Builder сбивает с толку, когда родительский вид перетаскивается в другое представление (UIView, ScrollView, StackView)
Вопрос:
Встраивание представления (которое содержит множество других подвидов внутри него) в ScrollView или в другое представление верхнего уровня - непростая задача по сравнению с тем, что я видел до сих пор. Вскоре после этого все подвиды могут показаться неуместными из-за того, что не удалось найти их исходный фрейм.
О:
Выполните следующие шаги, и вы сможете решить эту проблему как можно проще:
Нет, еще не закончено! Иногда вы можете столкнуться с тем, что есть еще несколько проблем, связанных с ограничениями пользовательского интерфейса, вам придется решать их соответствующим образом.
источник
Я обнаружил другой подход. Это в основном: Переместить = Вырезать + Вставить
Таким образом вы делаете:
Таким образом вы не:
Дело в том, что каждое представление, кроме одного (корневого) в Storyboard, имеет свое родительское представление . Затем, когда вы копируете / перемещаете несколько подпредставлений, вы теряете рамки и ограничения .
Ответ довольно прост. Вы делаете копию своих подвидов (SV), копируя их родительское представление (P) в новое родительское представление (P '). Таким образом, вам может потребоваться воссоздать только ограничения из этого родительского нового представления (P ') в его новое родительское представление, но не для каждого подпредставления, которое вы хотите переместить.
После того, как вы сделали копию родительского представления (P) в новый (P '), из этого нового представления (P') вы:
И из исходного родительского представления (P) вы:
Перед:
После:
Я должен подчеркнуть, что это не очень хорошо обобщает, если у вас, например, UIScrollView в качестве родительского представления. Тогда его копия будет снова UIScrollView, что может быть нежелательно.
Другое дело, когда вы удаляете некоторые из подпредставлений (SV) в исходном родительском представлении (P), вам может понадобиться воссоздать некоторые ограничения, если на них ссылаются другие (неподвижные подпредставления). Но вы все равно должны это сделать.
источник
Что помогло мне решить эту проблему, так это-
источник