шаги для создания UIScrollView с Интерфейсным Разработчиком - PullRequest
13 голосов
/ 02 февраля 2012

Я пытаюсь использовать UIScrollView, и, кажется, есть некоторая фундаментальная вещь, которую я просто не понимаю.

Допустим, я хочу использовать UIScrollView в своем приложении для iphone.У меня есть вид, заполненный кнопками, размером 320х700.Очевидно, что это слишком большой для iPhone, который является 320x480.Так что я знаю, что должен использовать UIScrollView.Однако, это тот порядок, в котором я должен создавать объекты

  1. Создать UIScrollView размером 320x700 в качестве размеров в «Представлении»
  2. Поместить все мои кнопки и т. Д. На этопредставление прокрутки
  3. В viewDidLoad установите для contentSize значение 320x700
  4. Установите делегата UIScrollView для владельца файла, а для представления FileOwner - UIScrollView
  5. Сбросьтеразмер просмотра обратно до 320x480.

Это правильно?

Это работает, но для меня это не имеет смысла.Я понял, что вид должен быть холстом, куда я добавляю все элементы пользовательского интерфейса.Я хочу, чтобы «холст» приложения для iPhone был 320х700, и я хочу, чтобы мои кнопки и т. Д. Могли быть размещены на этом холсте 320х700.Но если я не изменю размер UIScrollView обратно на 320x480, он не будет прокручиваться, потому что мне нужно установить размер содержимого UIScrollView больше его размера.

Но если я установлю размер UIScrollView на 320x480, то я не вижу экран и кнопки между 480 и 700 в Интерфейсном Разработчике!Поэтому мне кажется, что я должен сделать все свои правки и добавить все свои элементы пользовательского интерфейса в UIScrollView, а затем установить его обратно в 320x480!

Есть ли другой способ сделать это, который имеет больше смысла?Чего мне не хватает в моем понимании того, как это должно работать?

Ответы [ 2 ]

43 голосов
/ 03 февраля 2012

UPDATE

Я разместил другое решение здесь , которое, я думаю, проще и лучше.

ORIGINAL

Вот еще один способ сделать это, который вам может понравиться:

  1. Установите для пользовательского класса заполнителя владельца файла подкласс контроллера представления.
  2. Создайте UIScrollView в качестве объекта верхнего уровня в своем кончике. Установите его размер равным размеру экрана (320x460) или просто включите строку состояния в разделе «Имитация метрик».
  3. Подключите розетку delegate представления прокрутки к владельцу файла.
  4. Установите выход view владельца файла в режим прокрутки.
  5. Создайте UIView как еще один объект верхнего уровня в вашем кончике. Это будет просмотр вашего контента.
  6. Установите размер представления содержимого на 320x700.
  7. Создайте надежный (или сохраните, если не используете ARC) выход с именем contentView в контроллере представления (владелец файла) и подключите его к представлению содержимого.
  8. Положите кнопки в представлении содержимого.
  9. В вашем представлении контроллера viewDidLoad, сделайте следующее:

    - (void)viewDidLoad {
        [super viewDidLoad];
        [self.view addSubview:self.contentView];
        ((UIScrollView *)self.view).contentSize = self.contentView.frame.size;
    }
    
  10. В вашем представлении контроллера viewDidUnload сделайте следующее:

    - (void)viewDidUnload {
        self.contentView = nil;
        [super viewDidUnload];
    }
    

scrollbuttons project window
в полном размере

5 голосов
/ 02 февраля 2012

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

Вы застряли на том факте, что вам нужно изменить размер ScrollView. Вы должны думать об этом так: ScrollView имеет размер кадра и размер содержимого. Он построен так, что если размер контента больше размера кадра, он будет прокручиваться. Вы должны сделать рамку настолько большой, насколько вам нужно, в конструкторе интерфейса, чтобы вы могли расположить элементы, которые входят внутрь. Когда вы запускаете приложение, вы должны изменить размер рамки прокрутки в соответствии с разрешением экрана iPhone. Для ваших элементов управления не имеет смысла иметь рамку больше экрана.

--------------------------------------------
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         |                      |<------------------ iPhone Screen frame
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         |                      |         |<------- ScrollView Content size
|         |                      |         |
|         |                      |         |
|         |                      |<----------------- ScrollView Frame Size
|         |                      |         |
|         |                      |         |      
|         |                      |         |
|         |                      |         |
|         |                      |         |
|         ------------------------         |
|                                          |
|                                          |
|                                          |
--------------------------------------------

Я надеюсь, что это представление прояснит, как все должно работать. Другими словами, рамка прокрутки - это отверстие, через которое вы можете видеть контент, если целое такое же большое, как контент, то у вас есть Нет необходимости прокручивать, потому что вы можете видеть все это.

Я бы предложил также попытаться написать компоненты в коде без использования IB, чтобы лучше понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...