2015-08-26 6 views
2

Я использую построитель интерфейса раскадровки Xcode, и я создал контроллер представления с UIScrollView, который имеет только один дочерний UIView. У этого дочернего UIView есть много ярлыков/кнопок и т. Д. И превышает размер экрана по высоте, но когда я запускаю свое приложение, представление по какой-то причине не прокручивается.UIView в UIScrollView не прокручивается

Вот картина структуры ViewController: UIScrollView

Что я делаю неправильно?

+0

Установили ли вы свойство 'contentSize' прокрутки? – michaelrccurtis

+0

Что бы я установил 'contentSize'? – Bradsta

+0

обновил мой ответ, взгляните. Здесь есть дополнительные предложения: http://stackoverflow.com/questions/2944294/how-i-auto-size-a-uiscrollview-to-fit-the-content – michaelrccurtis

ответ

4

Необходимо установить свойство contentSize UIScrollView. Вы можете сделать это программно (например, в viewDidLayoutSubviews) или в соответствии с пользовательскими атрибутами времени выполнения на панели проверки идентификатора в построителе интерфейса.

Фактический размер зависит от вашего содержания. Вы можете вычислить его программно, используя что-то вроде:

CGRect contentRect = CGRectZero; 
for (UIView *view in self.scrollView.subviews) { 
    contentRect = CGRectUnion(contentRect, view.frame); 
} 
self.scrollView.contentSize = contentRect; 

, который будет просто найти наименьшее CGRect, содержащий все кадры из subvies в UIScrollView.

+2

Установка 'contentSize' в UIScrollView не работала в 'viewDidLoad()', однако он работал в 'viewDidLayoutSubviews()'. Спасибо за помощь! – Bradsta

+0

Ах, да, хорошая точка. Забыл об этом. Редактировали, чтобы помочь другим. – michaelrccurtis

1

contentSize 44 программный код contentSize, но вам не нужно и не нужно. Вместо этого убедитесь, что у вас достаточно ограничений, которые детское представление вида прокрутки может вычислить точную общую ширину и высоту. Если у вас недостаточно ограничений для этого, тогда интерфейс Builder покажет вам ошибку.

+0

Это правда. Проблема была в том, что я использовал UITabBarController и не понимал, что UIScrollView не учитывал панель вкладок при определении размера содержимого. Мне пришлось немного изменить размер 'contentSize' UIScrollView, чтобы учесть это, и я сделал это в' viewDidLayoutSubviews() ', поскольку поместить его в' viewDidLoad() 'не получилось для меня. Спасибо всем за помощь! – Bradsta

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