В XCode - есть ли способ перетащить компонент из одного вида в другой без потери кадров?



то, что я хотел бы сделать, это перетащить компонент/представление из одного супервизора в другой в построителе интерфейса Xcode без сброса его кадра/позиции.



поведение Xcode по умолчанию при этом, по-видимому, заключается в том, чтобы центрировать представление, перемещаемое вертикально и горизонтально в его новом супервизоре, сохраняя при этом его размеры. Это чрезвычайно расстраивает, поскольку это означает, что представление должно быть вручную перемещено в новом супервизоре. Но я правильно его расположил прежде чем я переместил его, поэтому я хотел бы, чтобы Xcode просто запомнил все атрибуты своего фрейма, а не только его ширину/высоту. Это возможно?

568   7  

7 ответов:

другое решение:

  1. выберите элементы, которые вы хотите в вашем подвиде, а затем
  2. (В панели инструментов) редактор - > встраивать - > тип представления для встраивания.

Я нашел кое-что, что может помочь вам, ребята!

задача состоит в том, чтобы перегруппировать "дочерние представления" в "родительское представление", чтобы они стали потомками родительского представления иерархически и сохраняли физические позиции на дисплее, как и до действия.

во-первых, настроить родительский вид, чтобы физически охватывает область дочерних представлений. Во-вторых, убедитесь, что все дети ниже в списке просмотра.

Теперь выберите все дети с помощью мыши и переместить их, например, один пиксель вверх и один пиксель вниз (просто сказать, что IB есть некоторые изменения). После этого отпустите детей, и они волшебным образом станут детьми родителя и сохранят свои позиции на дисплее.

Он работает для меня на OSX 10.8.2 и Xcode 4.6.

удачи!

мне удалось сэкономить много времени, потраченного на перемещение вещей, и сделал это:

  1. добавьте Родительский вид в Interface Builder на том же уровне, что и потенциальные подвиды.
  2. откройте раскадровку в текстовом редакторе и скопируйте потенциальные подвиды внутри тегов подвидов родительского представления. XCode это будет после того, как вы сохраните его обновление.

не очень элегантный, хотя, не могу понять, почему XCode не поддерживает его со сдвигом или что-то в этом роде.

  1. выберите все элементы управления, которые вы хотите переместить из одного UIView в другой UiView (nay be child) или ScrollView

  2. Вырезать/Копировать

  3. теперь после перетаскивания новый наследник UIView/представление ScrollView на ваш существующий наследник UIView, не один раз нажать, чтобы выбрать его, вместо этого дважды щелкните на новой наследник UIView/представление ScrollView и вставить все элементы управления.

  4. разница в расстоянии останется такой же среди всех элементов управления, но вам, возможно, придется изменить положение элементов управления снова. Поэтому не нажимайте нигде, пока вы не переместите их, просто переместите все элементы управления с помощью стрелок навигации, поскольку все они уже выбраны, или вы можете выбрать их снова.

примечание: Я м на XCode 4.2

Я сделал что-то похожее на решение Степана, не используя раскадровку. В МБ, в то время как просмотреть файл ViewController работает:

  1. создайте еще один вид в дополнение к главному виду VC
  2. переместить все подвиды во второй вид, перетаскивая их из одного вида в другой (перетаскивание из списка на левой стороне сбрасывает их положение) если вы не можете выбрать их из IB с помощью мыши, выберите все из списка на левой стороне, затем выберите один окончательный вид из панели IB с помощью кнопки" cmd".
  3. верните их к окончательному виду на начальном главном виде.
  4. удалить добавленный вид, все готово.

Это лучшее решение для копирования подвидов в другой вид и сохранения позиций:

  1. выберите элементы, которые вы хотите в вашем подвиде, а затем
  2. Редактор - > Вставить - > Вид
  3. скопируйте это представление (Cmd+C)
  4. отменить (Cmd+Z) (так как вы просто хотели subviews)
  5. перейдите к виду, в который вы хотите вложенные представления, и вставьте его (Cmd+V)
  6. выберите представление встраивания, которое вы копируете-вставляете и редактор -> Извлечь

Шаг 6 удалит представление встраивания, и вы скопируете только подвиды.

Я обнаружил другой подход. Это в основном: перемещение = вырезать + вставить

таким образом ты:

  • получить все ваши подвиды, чтобы быть детьми нового родительского представления (P')
  • держите (почти) все ваши ограничения в раскадровке на основе автоматического макета
  • держите относительные позиции вашего подвида (кадры) друг к другу

таким образом, вы не:

  • редактировать раскадровку файла в a текстовый редактор

база дело в том, что каждый вид, кроме одного (корень) в раскадровке имеет свой родительский вид. Далее, когда вы копируете / перемещаете несколько подвидов, вы потерять кадры и ограничения.

ответ довольно прост. Вы делаете копию своих подвидов (SVs), копируя их родительский вид (P) в новый родительский вид (P'). Таким образом, вам может потребоваться воссоздать только ограничения из этого родительского нового представления (P') в его новое родительское представление, но не для каждый подвид, который вы хотели переместить.

после того, как вы сделали копию родительского представления (P) в новый (P'), из этого нового представления (P') вы:

  • удалить всех детей, кроме тех, которые вы хотели переехать
  • воссоздать новые родительские (P') ограничения
  • воссоздать возможные выходы построителя интерфейса в (SVs')

и из исходного родительского представления (P) вы:

  • удалить все дети, которые вы хотели двигайся

перед:

Представление1

Представление2

P

SVs-you-want-to-move

SVs-you-do-not-want-to-move

View3

после:

Представление1

Представление2

P

SVs-you-do-not-want-to-move

View3

P'

SVs ' - you-want-to-move

Я должен подчеркнуть, что это не обобщает хорошо, если у вас есть, например, UIScrollView в качестве родительского представления. Тогда копия его будет снова UIScrollView, что может быть нежелательно.

другое дело, когда вы удалите некоторые подвиды (SVs) в исходном Родительском представлении (P) вам может потребоваться воссоздать некоторые ограничения, если другие (неподвижные подвиды) ссылаются на них. Но ты все равно должен это сделать.

Comments

    Ничего не найдено.