0

私は何かに問題がある、私はいくつかのアドバイスを与えることができれば感謝します。制約がVFLでプログラムで作成されている場合、制約の変更をアニメーション化するにはどうすればよいですか?

基本的に、ビジュアルフォーマット言語でいくつかの制約を作成し、ベースをより動的にしました。私はストーリーボードで私の意見に触れなかった。

赤色の領域をナビゲーションバーと見なすことができます。

例では、次のように表示されます。

enter image description here

私の問題があります。いくつかのviewControllerでトップビューを非表示にしたい

まずプロパティを作成しました。

@property (strong, nonatomic) NSLayoutConstraint *constraintTabbarHeight; 

しかし、私は、私はVFLと私のNSLayoutConstraintプロパティを設定できませんでした実現。 VFLは制約の配列を作成するためです。

これは私の最初の質問です。 VFL制約をNSLayoutConstraintプロパティで保持する方法はありますか?とにかく

ので、私はconstraintWithItem方法で私の高さ制約を作成することを決めました。

self.constraintTabbarHeight = [NSLayoutConstraint constraintWithItem:self.tabbarContainerView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:95]; 

次に、私はstackoverflowで検索し、メソッドを見つけました。私は望む任意のviewControllerからこのメソッドを呼び出すことができます。

- (void)updateTabbarConstraintWith:(int) heightValue{ 
    self.constraintTabbarHeight.constant = heighValue; 
     [UIView animateWithDuration:0.3 
        animations:^{ 
         [self.view layoutIfNeeded]; 
        }]; 
} 

私がself.constraintTabbarHeight.constant = 0に設定すると、すべて正常です。私のTopView(redArea)は消えていますが、PlaceholderViewはまだ同じ位置にあります。

私は[self.view layoutIfNeeded]が私のプレースホルダービューを更新し、それが私の画面を満たすと思った。

このようになります。私はそれが正しい作るにはどうすればよい

enter image description here

ご回答ありがとうございます。

答えて

0

あなたがそうでない場合、一方が他方の1

に影響を与えることなく移動することができます、あなたのTopView.BottomにごplaceholderView.Topから制約を作成する必要があります