2013-08-21 13 views
7

Cóż, wiem, że istnieje już wiele odpowiedzi na moje pytania, ale testowałem każdy z nich i nadal mam problem. Mam UIScrollView, który zawiera UIView, chcę aktywnego autolayout dla animacji. Ale z tego powodu mój scrollview nie przewija.Wykrywanie uiscrollview nie jest przewijane z powodu autolayout

To jest mój kod:

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(_scrollView, _containerScrollView); 

    [_scrollView setScrollEnabled:YES]; 
    [_scrollView setContentSize:CGSizeMake(_scrollView.frame.size.width, CGRectGetHeight(_containerScrollView.frame))]; 
    _scrollView.userInteractionEnabled = YES; 
    _scrollView.delaysContentTouches = YES; 

    [self.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_scrollView]|" options:0 metrics:0 views:viewsDictionary]]; 
    [self.superview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_scrollView]|" options:0 metrics:0 views:viewsDictionary]]; 
    [_scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_containerScrollView]|" options:0 metrics:0 views:viewsDictionary]]; 
    [_scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_containerScrollView]|" options:0 metrics:0 views:viewsDictionary]]; 

Ktoś może mi wyjaśnić dlaczego to nie działa?

+0

Czy scrollView i containerScrollView różnią się rozmiarami? Jeśli mają one ten sam rozmiar, rozmiar treści widoku przewijania będzie wskazywał, że przewijanie nie jest konieczne, aby wyświetlić całą zawartość. – Eric

+0

Tak, rozmiar jest inny. _scrollview height: 652. _containerScrollView height: 1050 – Maxime

+0

W autolayout zazwyczaj nie określa się "contentSize" widoku przewijania, ponieważ jest on na ogół podyktowany ograniczeniami subviews. Ale, cofając się od tego, być może możesz po prostu powiedzieć nam, co próbujesz osiągnąć. Trudno polecić rozwiązania bez zrozumienia większego obrazu pożądanego UX. Np. Jaka jest natura animacji? Jak zdefiniowałeś ograniczenia '_containerScrollView' (który, jak zakładam, jest' UIView' wewnątrz widoku przewijania, a nie 'UIScrollView' sam w sobie)? – Rob

Odpowiedz

0

Właśnie odpowiedziałem na podobne pytanie. https://stackoverflow.com/a/18404262/390665 Możesz znaleźć szczegółowy opis przewijania i wyjaśnienia NSLayoutConstraints dotyczące tej odpowiedzi.

+0

Dzięki za pomoc, wypróbuję to dziś po południu i jeśli powiem ci, czy to działa. – Maxime

7

Spróbuj ustawić rozmiar treści scrollView w int "viewDidLayoutSubviews" metodą z ustawieniem autolayouts.

+0

superb po prostu działało! –

Powiązane problemy