0

iOS 画面の下部に高さ約 50 ピクセルのフッター UIView があります。このビューのロード フェーズ中に、サブビュー (フッター サブビューとしましょう) を追加し、定数 0 ですべてのエッジに制約をプログラムで追加します (基本的にフッター ビュー全体をカバーします)。

keyboardWillShow 通知に登録し、その中で制約をフッター ビューに変更します (前の段落で説明した制約と混同しないでください)。これは、outer-footer-views の位置を制御する 1 つの制約にすぎません)。キーボードのすぐ上に表示されます。理論的には、この制約を変更すると、関連するすべての制約、特にフッターサブビューの外縁の制約が変更されるはずです。

キーボードが表示されると、表示中のキーボードのアニメーションに合わせてフッター ビューが適切にアニメーション化されますが、フッター ビュー内のフッター サブビューの制約が更新されるまでにわずかな遅延があり、フッターが空白の見苦しい視覚効果が得られます。一瞬。

これが私のkeyboardWillShowNotifcationのコードです

- (void)keyboardWillShow:(NSNotification *)notification
{
  _keyboardIsVisible = YES;
  CGRect keyboardSize;
  [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardSize];
  [UIView animateWithDuration:0.35f
                        delay:0
                      options:UIViewAnimationCurveLinear | UIViewAnimationOptionBeginFromCurrentState
                   animations:^{
                     [_footerTopSpaceConstraint setConstant:-1 * CGRectGetHeight(keyboardSize)];

                     [self.view layoutIfNeeded];
                   }
                   completion:nil];

}

親であるフッタービューとうまくアニメーション化されるように、フッターサブビューの制約を「より速く」更新する方法に関するヒントはありますか?

4

1 に答える 1