Przeczytałem już informacje o wydaniu iOS6 i niektóre z tematów związanych z Autolayout + UIScrollview tutaj, ale mam dziwny błąd, którego nie potrafię rozwiązać.Wywołania funkcji Autouzupełnianie UIScrollView dziwne zachowanie
hierarchia widoku jest:
- View
-- UIScrollView
---- UIImageView
---- UILabel
dodałem elementy w widoku poprzez interfejs Builder z autoLayout ON i przechowywane ograniczeń domyślnych.
Moja etykieta ma tekst dynamiczny, a jej wysokość jest niepotrzebna (liczba wierszy = 0 skonfigurowana w IB). Chcę, aby widok przewijania automatycznie dostosowywał się do wysokości widoku obrazu + etykiety.
Oto kod dla powiązanej klasy widok kontrolera:
- (void)viewDidLoad
{
[super viewDidLoad];
self.scrollView.translatesAutoresizingMaskIntoConstraints = NO;
self.imageView.translatesAutoresizingMaskIntoConstraints = NO;
self.label.translatesAutoresizingMaskIntoConstraints = NO;
self.imageView.image = [UIImage imageNamed:@"image.png"];
self.label.text = @"Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text Text text END";
[self.label sizeToFit];
NSDictionary *viewsDictionnary = NSDictionaryOfVariableBindings(scrollView, imageView, label);
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]-20-[label]-10-|" options:0 metrics:0 views:viewsDictionnary]];
self.imageView.userInteractionEnabled = YES;
[self.imageView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)]];
}
- (void)tap
{
[self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"View2"] animated:YES];
}
Jak widać, Dodaję pionową ograniczenie dla widoku przewijania. Wygląda to działa dobrze, ale mam następujący komunikat w konsoli:
2013-03-26 16: 24: 49.072 testu [34704: 11303] Nie można jednocześnie spełniać ograniczeń. Prawdopodobnie przynajmniej jedno z ograniczeń na poniższej liście jest takie, czego nie chcesz. Spróbuj tego: (1) spójrz na każde ograniczenie i spróbuj ustalić, czego się nie spodziewasz; (2) znajdź kod , który dodaje niepotrzebne ograniczenie lub ograniczenia i napraw je. (Uwaga: Jeśli widzisz NSAutoresizingMaskLayoutConstraints że nie rozumieją, należy zapoznać się z dokumentacją dla właściwości UIView translatesAutoresizingMaskIntoConstraints) ( „”, „”)
będzie próbował odzyskać, łamiąc ograniczenia
a teraz konkretny bug: Gdybym wskaż w dół, a potem kliknij na zdjęcie, aby przejść do drugiego widoku, a następnie kliknij przycisk wstecz, aby powrócić do bieżącego widoku, widok przewijania wola zaczyna się od poprzednia pozycja, ponieważ była górną częścią v iew. I nie będę w stanie przewijać, aby zobaczyć widok.
przykro mi, że nie ma wystarczającej reputacji do zamieszczania zdjęć, ale można pobrać przykładowy projekt tutaj, aby odtworzyć błąd: https://docs.google.com/file/d/0B-sCDWMvn-KGS19sUkZnUFdWWTg/edit?usp=sharing
Dzięki za pomoc, Lukas
EDIT Obejście problemu: tutaj: UIScrollView wrong offset with Auto Layout
Dzięki, jest to ten sam błąd, co opis podany w linku. Obejścia są tam zapewnione. – lukas