2013-05-01 2 views
2

Я пытаюсь создать динамическую форму с помощью UIScrollView, но я заметил, когда использовал NSLog, что мой scrollView's contentSize.height = 0.00000 я построил scrollView по ширине и высоте экрана на раскадровке с элементами внутри него. Так почему он возвращает 0? Все элементы внутри scrollView отображаются/работают правильно. Содержимое contentSize scrollView всегда по умолчанию равно 0, и мне просто нужно его установить?UIScrollView ContentSize.height по умолчанию 0,0000?

+0

Где в вашем коде вы указали 'NSLog'? – rog

ответ

2

Да по умолчанию 0. Вы должны установить размер содержимого вашего Scrollview пути суммирования всех высоту взгляды и пространство между ними, примером:

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)]; 
scrollView.backgroundColor = [UIColor blueColor]; 
[self.view addSubview:scrollView]; 

NSUInteger spaceBetweenLabels = 10; 

UILabel *firstLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 300, 40)]; 
firstLabel.text = @"first label text"; 

UILabel *secondLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, spaceBetweenLabels + firstLabel.frame.size.height, 300, 40)]; 
secondLabel.text = @"second label text"; 

[scrollView addSubview:firstLabel]; 
[scrollView addSubview:secondLabel]; 

CGSize fullContentSize = CGSizeMake(300, firstLabel.frame.size.height + secondLabel.frame.size.height + spaceBetweenLabels); 

[scrollView setContentSize:fullContentSize]; 

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

+0

Интересно, я думал, что contentSize по умолчанию будет иметь какой-то размер, потому что вы можете создавать контент в scrollview в Storyboard. Благодаря! – Alan

+0

@Alan, по умолчанию это не 0, он будет того же размера, что и прокрутка, сделанная вами в IB. Вероятно, вы проверили его в viewDidLoad (или ранее), где ему будет 0. viewDidLoad слишком рано проверять размеры просмотров. Если вы ввели журнал в viewDidAppear, вы должны увидеть его правильный размер. – rdelmar

2

Да, размер содержимого для UIScrollView по умолчанию равен нулю. Чтобы ввести прокрутку в свой scrollView, вам необходимо установить определенные свойства, такие как setScrollEnabled, установить Bouncing, установить горизонтальную/вертикальную прокрутку и самый важный контент для SIS для UIScrollView. UIScrollView не будет иметь прокрутку до тех пор, пока размер содержимого не станет больше размера UIScrollView.

+0

Спасибо Gaurav – Alan

0

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

Теперь ключ это установить последний контроль над нижним ограничением в формы на UIView (т.е. дно формы) Это будет переводить через Autolayout и не только вы будете иметь значение высоты, но вы будете иметь возможность вертикально прокручивать форму. Также ...

  1. Не устанавливайте scrollView.contentSize
  2. Не устанавливайте translatesAutoresizingMaskIntoConstraints (оставить по умолчанию)
  3. Не устанавливайте высоту формы (UIView) с использованием ограничений это то, что делает Autolayout
  4. не установлено никаких ограничений на форму (UIView)

Примечание: Если вы хотите ширину вашей формы (UIView), чтобы быть таким же, как ваши устройства ... затем щелкните правой кнопкой мыши на форме (UIView) навигация (т.е. где все элементы управления перечислены в дереве), а затем перетащите его в главный элемент UIView. Затем во всплывающем окне выберите равную ширину

+1

Тот же ответ был отправлен здесь: http://stackoverflow.com/questions/32238290/uiview-in-uiscrollview-not-scrolling/37771724#37771724 –

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