下の画像から、ユーザーがview1をタップすると、view2とview3がフッターにスライドダウンし、フッターでview3の制約定数を0(っぽい)に設定することで効果的に引っ張られます。最初の画像に示すように、制約を使用して xib をセットアップしました。[今の私にとって] 最も重要な 2 つは、view1View2 制約と view3Footer 制約です。
スライド ダウンを実現するために、view1view2 制約の優先度を低く設定し、view3Footer 制約の優先度を高く設定してから、animateWithDuration で view3Footer 制約定数を更新しました。
私の問題は、view2 と view3 を上にスライドさせることです。これは、同じ方法を使用していた場合、view1view2 制約定数を 2 に設定することで達成できます。
上記のスライドアップの問題は、view1View2 制約よりも view3Footer 制約の優先度が高いことだと思います。優先度は読み取り専用のように見えるため、これらを具体的に変更することはできません。制約の設定では、ビューの配置のみを要求していることを理解しています。
...完全に間違った方法を使用している可能性があると思います...
私はこれを正しい方法で行っていますか?制約オブジェクト IBOutlet を取得して書き直す必要がありますか? もしそうなら、私は優先順位を書き直していますか?優先度が等しい定数に >= を使用する必要がありますが、機能していないようです。単純にアニメーション化するための私のコードは以下のとおりです。これは大したことではありませんが、ジェスチャ認識機能を除けば、セットアップは主に xib にあります。
どんな助けでも大歓迎です。ありがとう、スティーブ
スライドダウンの場合:
[UIView animateWithDuration:0.9 animations:^{
_view3FooterConstraint.constant=2;
[self.view layoutIfNeeded];
} completion:^(BOOL finished){}];
UPDATEまた、この設定の優先順位が等しくなるようにしました-スライドダウンを達成できなくなりました
_view3FooterConstraint.constant=2;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:0.9 animations:^{
[self.view layoutIfNeeded];
} completion:^(BOOL finished){}];
スライドアップの場合:
[UIView animateWithDuration:0.9 animations:^{
_view1View2Constraint.constant=2;
[self.view layoutIfNeeded];
} completion:^(BOOL finished){}];