Ich habe noch nie mit Autolayout- Einschränkungen gearbeitet. Ich habe eine kleine neue App, an der ich arbeite, und habe festgestellt, dass die Ansichten der NIB standardmäßig auf Autolayout eingestellt sind. Also, ich dachte ich die Möglichkeit zur Arbeit nehmen würde mit ihm und versuchen Sie herauszufinden, wo Apple mit diesem geht.
Erste Herausforderung:
Ich muss die Größe eines MKMapView ändern und möchte es an der neuen Position animieren. Wenn ich das so mache, wie ich es gewohnt bin:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
... dann wird die MKMapView bei jeder Aktualisierung einer Geschwisteransicht auf ihre ursprüngliche Höhe zurückschnappen (in meinem Fall wird der Titel eines UISegmentedControl aktualisiert [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Ich denke also, ich möchte die Einschränkungen von MKMapView so ändern, dass sie der Höhe der übergeordneten Ansicht entsprechen und relativ zum oberen Rand des UISegmentedControl sind, das abgedeckt wurde :V:[MKMapView]-(16)-[UISegmentedControl]
Ich möchte, dass die MKMapView-Höhe verkürzt wird, sodass einige Steuerelemente unter der Kartenansicht angezeigt werden. Um dies zu tun Ich denke , ich brauche die Einschränkung von einem festen in voller Größe im Hinblick auf eine ändern , wo der Boden auf die Spitze eines UISegmentedControl beschränkt ist ... und ich möchte es als Ansicht schrumpft auf neue Größe animieren.
Wie geht man damit um?
Bearbeiten - Diese Animation wird nicht animiert, obwohl der untere Rand der Ansicht sofort nach oben verschoben wird:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
und das nibMapViewConstraint
ist in IB mit der unteren Vertikalraumbeschränkung verbunden.