これまでにautolayout制約を扱ったことはありません。私が作業している小さな新しいアプリがあり、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]
)。
だから、私は考えて私がやりたいことは、それがあることUISegmentedControlの先頭に相対的であることに、親ビューの絶頂に等しいからMKMapViewの制約を変更されたカバーします:V:[MKMapView]-(16)-[UISegmentedControl]
MKMapViewの高さを短くして、マップビューの下の一部のコントロールが表示されるようにしたいのですが。これを行うには、固定フルサイズビューから、UISegmentedControlの上部が下部に制限されているビューに制限を変更する必要があると思います。ビューが新しいサイズに縮小するときにアニメーションを表示したいと思います。
これをどうやってやるの?
編集- このアニメーションはされていないアニメーションビューの下部には、170を瞬時に動かすんが。
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
そしてnibMapViewConstraint
下の垂直方向のスペースの制約にIBにまで配線されています。