このコードは、初回を除いて、実行されるたびにビューをアニメーション化します。キーボードが表示または非表示になると、UIView が再配置されます。
[UIView
animateWithDuration:0.26
animations:^{
[self setupActiveOverlayViewFrame];
}completion:nil];
-(void)setupActiveOverlayViewFrame {
float optimalOverlayHeight = [self.activePanel optimalHeight];
float realOverlayHeight = MIN(optimalOverlayHeight, self.displayView.frame.size.height);
if (self.activePanel.frame.size.height != realOverlayHeight) {
self.activePanel.frame = CGRectMake(self.activePanel.frame.origin.x, 0, self.activePanel.frame.size.width, realOverlayHeight);
}
self.activePanel.center = [self correctCenterForOverlay];
}
私が投稿した方法は、サイズを変更して再配置するだけであることを示すことです。
このコードを初めて実行するときは、アニメーション化されません。位置にジャンプするだけです。その後は毎回、正しくアニメーション化されます。