2015-05-30 3 views
0

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

[self addSubview:self.scrollView]; 
[self.scrollView addSubview:self.contectView]; 

NSDictionary *views = @{@"scrollView" : self.scrollView , @"contectView" : self.contectView }; 

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics:0 views:views]]; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView(==64)]" options:0 metrics:0 views:views]]; 
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[contectView]|" options:0 metrics:0 views:views]]; 
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[contectView]|" options:0 metrics:0 views:views]]; 
[self layoutIfNeeded]; 
NSLog(@"%@",self.scrollView); 
NSLog(@"%@",self.contectView); 

Console O/р

<UIScrollView: 0x78fd47a0; frame = (0 0; 0 64); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x78faced0>; layer = <CALayer: 0x78facea0>; contentOffset: {0, 0}; contentSize: {0, 0}> 

<UIView: 0x78fae7d0; frame = (0 0; 0 0); layer = <CALayer: 0x78fad970>> 

Я аспектировал contectView высота рамы также 64. но она возвращает 0

ответ

1

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

Подробнее here

+0

Я не говорю о свитке здесь. Я установил ограничение равной высоты contectview так же, как scrollview. то почему он дает мне нуль, почему scrollview имеет высоту 64 px? –

+1

Я точно объясняю, почему этого не происходит. В вашем представлении контента отсутствует собственный размер содержимого (поэтому равно 0), а во-вторых, если вы хотите сделать высоту равной, вы должны добавить ограничение размера на высоту, равную высоте просмотра прокрутки. Также прочитайте техническую записку от Apple, которую я связал. – Andrea

+0

Ответ Андреа абсолютно прав. Попробуйте дать ясную ширину и высоту 'contectView', и она исправит вашу проблему. Например, '@" V: | [contectView (64.0)] | "' и '@" H: | [contectView (600.0)] | "'. Вы заметите, что вы можете установить эти значения больше ширины и высоты прокрутки, не вызывая конфликта макета - прокрутка будет просто прокручиваться, чтобы показать все 'contectView'. – johnpatrickmorgan

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