私はかつて持っていたこのビューを持っていますautoresizingMask = UIViewAutoresizingFlexibleHeight
ステータス バーがその高さをアニメートすると (電話を切るときなど)、ビューの高さがアニメートされて増加します。
しかし、自動レイアウトでは、この autoresizingMask を制約に置き換えています。
UIView *orangeView = [[UIView alloc] initWithFrame:CGRectZero];
orangeView.translatesAutoresizingMaskIntoConstraints = NO;
orangeView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:orangeView];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[orangeView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(orangeView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(40)-[orangeView]-(190)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(orangeView)]];
しかし今、私のレイアウトの変更はステータスバーでアニメーション化されず、アニメーションなしで変更されただけです.
これで、制約ベースのレイアウトを使用する場合、アニメーション ブロックで -layoutIfNeeded を呼び出す必要があることがわかりました。しかし、ここでアニメーション ブロックを作成するのは私ではありません。変更をアニメーション化する方法はありますか?
私が開始していないこのアニメーション ブロック中に実行されるコード内の場所を見つけなければならないということですか? が起動されたときにコントローラーで [self.view layoutIfNeeded] を設定しようとしましたUIApplicationWillChangeStatusBarFrameNotification
が、機能しません。