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