Ich habe bereits gelesen, die iOS6 Release Notes und einige der verwandten Themen für Autolayout + UIScrollview hier, aber ich habe einen seltsamen Fehler, den ich nicht wissen, wie zu lösen.Auto Layout UIScrollView Einschränkungen seltsames Verhalten
die Hierarchie der Ansicht ist:
- View
-- UIScrollView
---- UIImageView
---- UILabel
I die Elemente in der Ansicht durch Interface Builder hinzugefügt, mit Automatische Anordnung ON gehalten und die Standardbeschränkungen.
Mein Label hat einen dynamischen Text und seine Höhe ist entbehrlich (Anzahl der Zeilen = 0 in IB konfiguriert). Ich möchte, dass sich die Bildlaufansicht automatisch an die Höhe der Bildansicht + des Labels anpasst. Hier
ist der Code für die zugehörige View-Controller-Klasse:
- (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];
}
Wie Sie sehen, ich bin eine vertikale Einschränkung für die Scroll-Ansicht hinzufügen. Das scheint funktioniert gut, aber ich habe die folgende Meldung in der Konsole:
2013-03-26 16: 24: 49,072 Test [34704: 11303] kann nicht gleichzeitig Einschränkungen erfüllen. Wahrscheinlich mindestens eine der Einschränkungen in der folgenden Liste ist eine, die Sie nicht wollen. Versuchen Sie Folgendes: (1) Sehen Sie sich jede Einschränkung an und versuchen Sie herauszufinden, was Sie nicht erwarten; (2) finde den Code , der die unerwünschte Einschränkung oder die Nebenbedingungen hinzugefügt und behoben hat. (Hinweis: Wenn Sie sehen, dass Sie NSAutoresizingMaskLayoutConstraints nicht verstehen, finden Sie in der Dokumentation für die UIView Eigenschaft translatesAutoresizingMaskIntoConstraints) ( „“, „“)
Wird durch Zwang zu brechen zu erholen versuchen
und nun der konkrete Fehler: Wenn ich auf die nach unten scrollen, ich auf das Bild klicken Sie dann auf den zweiten Blick zu gehen, und klicken Sie auf die aktuelle Ansicht zurückzukehren, beginnt die Scroll-Ansicht werden aus der Präzedenzfall Position wie es war die Spitze der v iew. Und ich kann nicht scrollen, um die Ansicht zu sehen.
Es tut mir leid ich habe nicht genug Ruf Bilder posten, aber Sie können das Beispielprojekt hier herunterladen um den Fehler zu reproduzieren: https://docs.google.com/file/d/0B-sCDWMvn-KGS19sUkZnUFdWWTg/edit?usp=sharing
Danke für die Hilfe, Lukas
EDIT Workaround für den Fehler hier: UIScrollView wrong offset with Auto Layout
Danke, dies ist der gleiche Fehler wie in dem Link beschrieben, den Sie angegeben haben. Workarounds sind dort vorgesehen. – lukas