iOS: 新しい自動レイアウト制約 (高さ) に合わせてアニメーション化する方法 質問する

iOS: 新しい自動レイアウト制約 (高さ) に合わせてアニメーション化する方法 質問する

私は一緒に働いたことがない自動レイアウト制約を前にしました。私は現在小さな新しいアプリを開発中ですが、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;

    }];

そして、nibMapViewConstraintIB で下部の垂直スペース制約に接続されます。

ベストアンサー1

制約を更新した後:

[UIView animateWithDuration:0.5 animations:^{[self.view layoutIfNeeded];}];

self.view包含ビューへの参照に置き換えます。

おすすめ記事