私は一緒に働いたことがない自動レイアウト制約を前にしました。私は現在小さな新しいアプリを開発中ですが、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;
}];
そして、nibMapViewConstraint
IB で下部の垂直スペース制約に接続されます。
ベストアンサー1
制約を更新した後:
[UIView animateWithDuration:0.5 animations:^{[self.view layoutIfNeeded];}];
self.view
包含ビューへの参照に置き換えます。