2011-02-03 3 views
4

У меня есть UIScrollView, который имеет в нем один дочерний вид. Если я установил contentSizeUIScrollView сразу после создания, все работает так, как я ожидаю, и я получаю прокрутку.UIScrollView Обновление контентаСоздание причин Прокрутка

Задача - вид в пределах UIScrollView имеет динамический размер. Ширина фиксирована, но высота неизвестна во время установки прокрутки.

Когда я делаю [scrollView setContentSize:CGRectMake(...)] после того, как внутренний вид делает это, обновление scrollview до нужного размера и прокрутки работает. Таким образом, основная прокрутка отлично работает.

Однако основная проблема заключается в том, что, когда я setContentSize на более позднем этапе, то UIScrollView решает прокрутить вниз (с анимацией) к концу Scrollview, который не то, что я хочу, я хочу прокрутки, чтобы остаться на сверху, и пусть содержимое в scrollview будет увеличиваться или уменьшаться, без изменения видимой позиции прокрутки.

Что мне не хватает?

+0

Я, конечно, надеюсь, что вы не передавая CGRect в '-setContentSize:'. –

+0

@Kevin спасибо, что поймал это. Должен быть CGSizeMake (это на самом деле то, что у меня есть в коде). – Kekoa

ответ

6

Почему вы также не вызываете [scrollview setContentOffset:CGPointMake(0,0)];, когда вы вызываете setContentSize?

+2

Спасибо за ответ. Вы заставили меня подумать, почему смещение не будет 0,0 в первую очередь. Проблема заключалась в том, что я инициализировал смещение содержимого на высоту, большую, чем само окно, поэтому, когда размер содержимого изменился, scrollview, вероятно, хотел сохранить его исходную позицию. Не инициализация размера содержимого фиксировала поведение и не двигалась. – Kekoa

0

Чтобы заставить UIScrollView прокрутить только, например. по горизонтали, я всегда устанавливать, не прокручивать значение для contentSize 0, используя:

CGSizeMake(contentSize.width, 0). 
Смежные вопросы