2014-01-26 5 views
0

Это приложение для раскадровки. Я добавил UIScrollView поверх UIView, который есть в контроллере представления по умолчанию. Затем я добавил некоторые элементы пользовательского интерфейса в список прокрутки. После разработки видимой части представления прокрутки, используя его ручки, я растянул ее по вертикали и немного подтолкнул ее, чтобы эта часть была видна для меня, чтобы создать остальную часть экрана. После того, как я закончил, я позиционировал вид прокрутки, чтобы соответствовать представлению. Обратите внимание, что я не изменял размер прокрутки, чтобы соответствовать размеру представления из IB.Невозможно заставить UIScrollView работать

Затем я добавил все 4 ограничения в прокрутку (ведущее и трейлинг-пространство для просмотра, верхнее и нижнее пространство для просмотра). Затем я выбрал UIView, открыл инспектор размера и изменил значение «Нижнее пространство» на значение супервизора до 0. Это автоматически изменило размер UIScrollView, чтобы вписаться в контроллер вида.

Затем я добавил следующие строки кода внутри метода viewDidLoad.

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.frame.size.height); 
self.scrollView.frame = self.view.frame; 

Но это не сработает. UIScrollView не будет прокручиваться. Да, прокрутка включена.

Может кто-нибудь, пожалуйста, скажите мне, что мне здесь не хватает?

спасибо.

EDIT:

Я нашел старый проект шахты here. Он использует способ, который я только что объяснил выше, и он работает! Не знаю, почему этого больше нет.

Я также добавил demo project здесь с проблемой.

+0

вы установили размер контента и рамку то же самое .. поэтому scrollview не будет прокручиваться. –

+0

Кроме того, во время 'viewDidLoad' представления не полностью выложены, поэтому размеры (кадр) не заданы. Попробуйте поместить свой код в 'viewWillAppear' – bobnoble

+0

@bobnoble. Вы правы. Я переместил код в метод 'viewDidAppear' и закодировал значение для' self.scrollView.frame.size.height' с 700, и теперь он работает. Я не понимаю, мой предыдущий способ работал для меня в прошлом. Я нашел старый проект (здесь) [http://www54.zippyshare.com/v/37137086/file.html]. В нем я использую его внутри 'viewDidLoad' и не имеет жестко заданных значений. – Isuru

ответ

1

Если я правильно понял ваш код (это поможет скриншот представления), вы установите размер кадра прокрутки в полный размер представления и затем установите contentSize в размер представления. Скроллвью просматривает только в том случае, если contentSize больше его размера.

+0

У меня есть демонстрационный проект Xcode [здесь] (https://www.dropbox.com/s/331p2qesc65inrj/ScrollViewTest.zip), если вы могли бы взглянуть на него. – Isuru

+0

Выглядит нормально для меня - главный экран прокручивается вертикально – rist

+0

Я жестко запрограммировал высоту прокрутки и переместил 2 линии в метод 'viewDidAppear'. Теперь это работает. Странно, что я нашел [этот] (http://www54.zippyshare.com/v/37137086/file.html) старый проект моей работы, отлично работающий без каких-либо жестко заданных значений, а в методе 'viewDidLoad'! Есть ли способ заставить это работать без жесткого кодирования высоты scrollview? – Isuru

0

Возможно, это не полный ответ на ваш вопрос, но он поможет вам и другим.

Для разработки мнения, которые больше по размеру, чем размер UIScrollView, лучший способ иметь UIView как вид ребенка к UIScrollView и положить все содержимое на UIView и, наконец, поставить UIView, как подвид из UISCrollView. Наконец, вы можете установить размер UIView как размер содержимого UISCrollView.

Cheers. :)

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