何かと困っているのですが、何かアドバイスをいただければ幸いです。
基本的に、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] がプレースホルダー ビューを更新し、画面いっぱいに表示されると思いました。
このように見えます。
どうすれば正しくなりますか?
回答ありがとうございます。