0

何かと困っているのですが、何かアドバイスをいただければ幸いです。

基本的に、Visual Format Language でいくつかの制約を作成し、ベースをより動的にします。絵コンテの見解には触れませんでした。

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

例のビューでは次のようになります。

ここに画像の説明を入力

私の問題は; 一部のviewControllerでtopViewを非表示にしたい。

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

@property (strong, nonatomic) NSLayoutConstraint *constraintTabbarHeight;

しかし、VFL でNSLayoutConstraintプロパティを設定できないことに気付きました。VFL は制約の配列を作成するためです。

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

とにかく、 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] がプレースホルダー ビューを更新し、画面いっぱいに表示されると思いました。

このように見えます。

ここに画像の説明を入力

どうすれば正しくなりますか?

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

4

1 に答える 1

0

placeholderView.Top から TopView.Bottom への制約を作成する必要があります。そうしないと、一方が他方に影響を与えることなく移動できます。

于 2016-06-01T14:34:32.697 に答える