2013-11-19 2 views
2

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

У меня есть сцена создана следующим образом:
-main View
  - Scroll View
    - Содержание Просмотр
      - Ярлык
      - Ярлык

Контроллер просмотра имеет свой размер метрической установки, равный Freeform. В представлении «Основной вид», «Просмотр прокрутки» и «Просмотр содержимого» их высота установлена ​​на 700, поэтому я правильно вижу макет.

В моей .h файле у меня есть выход, соединенный с UIScrollView и в моем методе viewDidLoad я делаю следующее:

Scroller.translatesAutoresizingMaskIntoConstraints = YES; 
[self.Scroller setContentSize:CGSizeMake(320, 1000)]; 

Я попытался установить все виды ограничений на различные вещи. Обычно, когда я добавляю новый Xcode, он ворчит, что ограничения неверны и предлагает мне обновить их. Я пробовал так много различных вариантов, я не могу вспомнить их все, но вот некоторые из них:

  1. Закрепление высоту Scroll View
  2. скрепляя нижней части содержимого Вид на Scroll View - Getting UIScrollView to work with AutoLayout
  3. Закрепление высоту содержимого Вид

Другие вещи, которые я пробовал:

  1. Чтениеследующие Technote Apple: - https://developer.apple.com/library/ios/technotes/tn2154/_index.html
  2. Установка Содержание Inset в Scrollview в - Confusion Regarding UIScrollView and AutoLayout
  3. Настройка содержимого Размер: UIWebView's UIScrollView subview can scroll but bounce back to the frame without appearing vertical scroll indicator

Я уверен, что это должно быть относительно прямой, но я был рвать на себе волосы вне. Есть много подобных вопросов в Stackoverflow и Google, но ни один из них, похоже, полностью не отвечает моим требованиям.

Любая помощь или ресурсы были бы весьма признательны.

JA

+0

Вы проверили значение contentSize после события макета, например, в viewDidAppear? – yurish

+0

Это 0,000000. Почему это было бы, если оно установлено в 1000.000000 в представлении «Загружено»? – Jim

+0

Все, кажется, работает нормально, если я перемещаю [self.Scroller setContentSize: ...] из метода viewDidLoad в viewDidAppear. Я не понимаю, почему, хотя viewDidLoad следует вызывать, когда он впервые создан, не так ли? – Jim

ответ

2

Одна из возможных причин этого заключается в том, что взгляд скроллинга contentSize сбрасывается после того, как событие макета, которое происходит после того, как viewDidLoad (например, из-за неправильные настройки ограничений).

1

я должен был поставить код в viewDidAppear для того, чтобы работать правильно

CGSize size = CGSizeMake(320, 931); 
    self.scroller.scrollEnabled = YES; 
    self.scroller.contentSize = size; 
Смежные вопросы