Ответ 1
Другое решение:
- Выберите элементы, которые вы хотите в своем подвью, затем
- (на панели инструментов) Редактор → Вставить In → тип просмотра для вставки.
То, что я хотел бы сделать, это перетащить компонент/представление из одного супервизора в другой в Xcode interface-builder без сброса его кадра/положения.
Поведение Xcode по умолчанию при выполнении этого похоже на то, чтобы центрировать представление, перемещаемое вертикально и горизонтально в новом супервизоре при сохранении его размеров. Это крайне расстраивает, так как это означает, что представление необходимо вручную переместить в новый супервизор. Но я правильно позиционировал его, прежде чем переместить его, поэтому Xcode хотел бы просто запомнить все атрибуты его фрейма, а не только его ширину/высоту. Это возможно?
Другое решение:
Я нашел кое-что, что могло бы помочь вам, ребята!
Задача состоит в том, чтобы перегруппировать "дочерние представления" в "родительский вид", чтобы они становились дочерними элементами родительского представления иерархически и сохраняли отображаемые физические позиции как прежде.
Сначала настройте родительское представление, чтобы физически покрыть область дочерних представлений. Во-вторых, убедитесь, что все дети ревут в списке просмотра.
Теперь выберите всех детей с помощью мыши и переместите их, например. один пиксель вверх и один пиксель вниз (просто для того чтобы сказать IB есть некоторое изменение). После этого выпустят детей, и они волшебным образом станут детьми родителя и будут показывать свои позиции.
Он работает для меня на OSX 10.8.2 и Xcode 4.6.
Удачи!
Мне удалось сэкономить много времени на перепозиционирование и сделать следующее:
Не очень элегантный, хотя не вижу, почему XCode не поддерживает его с помощью Shift или что-то в этом роде.
Выберите все элементы управления, которые вы хотите переместить из одного UIView в другой UiView (например, быть дочерним) или ScrollView
Вырезать/Копировать
Теперь, перетащив новый UIView/ScrollView в существующий UIView, не нажимайте один раз, чтобы выбрать его, вместо DOUBLE нажмите новый UIView/ScrollView и вставьте все элементы управления.
Дистанционное расстояние останется таким же среди всех элементов управления, но вам, возможно, придется снова установить элементы управления. Поэтому не нажимайте нигде, пока вы не переместили их, просто переместите все элементы управления стрелками навигации, поскольку все они уже выбраны, или вы можете снова выбрать их.
ПРИМЕЧАНИЕ: я m на XCode 4.2
Я сделал что-то похожее на решение Степана, не используя раскадровку. В IB, когда вид ViewController открыт:
Это лучшее решение для копирования подзонов в другое представление и сохранения позиций:
Шаг 6 удалит представление вложения, и вы скопировали только субвью.
Я обнаружил другой подход. Это в основном: Move = Cut + Paste
Таким образом:
Таким образом, вы не можете:
Основой является то, что каждый вид, кроме одного (root) в Storyboard , имеет родительский вид. Затем, когда вы копируете/перемещаете несколько подзонов, вы теряете кадры и ограничения.
Ответ довольно прост. Вы делаете копию своих подсмотров (SV), копируя их родительское представление (P) в новое родительское представление (P '). Таким образом, вам может понадобиться воссоздать только ограничения из этого родительского нового представления (P ') в его новое родительское представление, но не для каждого подсмотра, который вы хотите переместить.
После того, как вы сделали копию родительского представления (P) в новую (P '), из этого нового представления (P') вы:
И из исходного родительского вида (P) вы:
До:
View1
View2
Р
SVs-вы-хотите передвигающийся
SVs-вы-делать-не-хочу передвигающийся
View3
После того, как:
View1
View2
Р
SVs-вы-делать-не-хочу передвигающийся
View3
Р '
SVs'-вы-хотите передвигающийся
Я должен подчеркнуть, что это не очень хорошо обобщается, если у вас есть, например, UIScrollView как родительское представление. Тогда его копией будет снова UIScrollView, что может быть нежелательно.
Другое дело, когда вы удаляете некоторые из подсмотров (SVs) в исходном родительском представлении (P), вам может потребоваться воссоздать некоторые ограничения, если ссылаются на другие (не движущиеся подзаголовки). Но вы все равно должны это делать.
Q:
Внедрение представления (которое содержит много других подпрограмм внутри него) в ScrollView или в другом представлении верхнего уровня не является прямым с тем, что я видел до сих пор. Что произойдет вскоре после того, как все подзаголовки могут показаться неуместными из-за того, что они не могут найти их исходный кадр.
A:
Выполните следующие шаги, и вы сможете решить эту задачу как можно проще:
Нет, еще не закончил! Иногда вы можете столкнуться с тем, что существует несколько проблем, связанных с ограничениями пользовательского интерфейса, и вам придется их соответствующим образом разрешать.