2013-06-06 2 views
26

У меня есть приложение iOS, в котором я создал некоторый контроллер вида в раскадровке, представление view-controller имеет некоторые подвид. Теперь Я хочу добавить некоторый scrollview в это представление и хочу переместить все эти подпрограммы в этом scrollview. Но проблема в том, что я перетаскиваю эти представления в scrollview, построитель интерфейса центрирует эти подпункты, вся информация о местоположении теряется.Перемещение подземелий из одного вида в другое, без изменения информации о местоположении в раскадровке?

Я не хочу, чтобы интерфейс построил для этого. Разве нет подходящего пути решения этой проблемы? Я уже искал эту проблему и нашел эти два решения, но ни один из них не является полезным в моем случае.

Adding a subview to the current view without messing up positioning of objects in the view Я не могу использовать это решение, потому что это добавляет представление в другое представление, пока я хочу добавить scrollview.

XCode - Is there a way to drag a component from one view to another without losing its frame? Также это решение не помогает мне, потому что файл раскадровки испорчен и поврежден, когда я это сделал.

ответ

56

Да есть простой способ сделать это:

Шаг 1: Выберите ваши взгляды

enter image description here

Шаг 2: Go Editor>Вставить в>Проспект прокрутки

enter image description here

Done!

enter image description here

PS. Это очень удобный способ группировки взглядов. Вы можете вставлять любые виды в представление «контейнер», перемещать их по своему усмотрению (даже в кросс-сцену), сохраняя относительную информацию о местоположении, а затем вы можете сохранить ее как группу или ее unembed.

+0

Отличный ответ! Thankyou so much :) Просто небольшая проблема, которую я нашел, когда я вставляю subview в scrollview, ширина прокрутки составляет 340 вместо 320. И благодаря этому каждый subview orgin.x становится origin.x + 10. Когда я вручную изменяю размер ширины прокрутки от 340 до 320, subgin orgin.x все еще origin.x + 10. Поэтому мне нужно вручную изменить значение orgin.x. Есть ли решение для этого? Еще раз спасибо за вашу отличную технику :) – iMemon

+1

Привет, я не уверен, что правильно понимаю, но вы должны отметить две вещи: 1. Каждый кадр 'UIView' относится к его родительскому виду (поэтому, когда вы вставляете представления в кадры отражают их положение относительно прокрутки). 2. При встраивании представлений таким образом, IB автоматически добавляет дополнение в соответствии с HIG от Apple. Если вы хотите изменить размер представления «контейнер», не изменяя позиции его подпунктов, вы просто снимите флажок «Авторезистировать подпункты» в IB. Я надеюсь, что это имеет смысл ... – Alladinian

+0

Да, вы правы. Вы поняли это так, как я хочу.Я уже знаю о первом пункте. Что касается вас, 2-й пункт «IB добавляет автоматически дополнение в соответствии с HIG от Apple». Что я должен делать, когда я не хочу этого поведения? – iMemon

3

Если кто-то приходит через этот вопрос пытаются найти способ сделать это программно (как я), вот что я в конечном итоге с помощью:

for (UIView *view in [_viewAdd subviews]) { 
    [_viewMain addSubview:view]; 
} 

Примечание: addSubview удаляет вид из его предыдущего SuperView так нет необходимости вводить код для удаления

Смежные вопросы