これまで自動レイアウトの制約を扱ったことはありません。私が取り組んでいる小さな新しいアプリがあり、NIB のビューがデフォルトで自動レイアウトになっていることに気付きました。それで、私はこの機会を利用して、Apple がこれでどこに向かっているのかを理解しようと考えました。
最初の課題:
MKMapView のサイズを変更する必要があり、新しい位置にアニメーション化したいと考えています。私が慣れている方法でこれを行う場合:
[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;
}];
...その後、兄弟ビューが更新されるたびに、MKMapView は元の高さに「スナップ」されます (私の場合、UISegmentedControl のタイトルが更新されてい[myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
ます)。
だから、私がやりたいと思うのは、MKMapViewの制約を、親ビューの高さに等しいものから、それがカバーしていたUISegmentedControlの上部に相対的なものに変更することです:V:[MKMapView]-(16)-[UISegmentedControl]
私が望むのは、MKMapView の高さを短くして、マップ ビューの下にあるいくつかのコントロールが表示されるようにすることです。そのためには、制約を固定のフル サイズ ビューから、下部が UISegmentedControl の上部に制限されるビューに変更する必要があると思います...ビューが新しいサイズに縮小するときにアニメーション化したいと思います。
これについてどうやって行くのですか?
編集 -このアニメーションはアニメーション化されていませんが、ビューの下部はすぐに 170 移動します:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
IBでnibMapViewConstraint
下部の垂直スペース制約に接続されています。