私のアプリでは、ウィンドウ全体を残りの画面スペースに収まるように拡大縮小するだけで、ステータスバーフレームの変更を処理します。
- (void)application:(UIApplication *)application willChangeStatusBarFrame:
(CGRect)newStatusBarFrame {
UIView* window = [UIApplication sharedApplication].keyWindow;
[UIView animateWithDuration:1 / 3.f animations:^{
CGFloat heightDifference = newStatusBarFrame.size.height -
kWXDefaultStatusBarHeight;
[window setTransform:CGAffineTransformMakeScale(1.f,
heightScaleForCallStatusBar())];
[window setFrame:CGRectOffset(window.frame, 0, heightDifference -
kWXDefaultStatusBarHeight / 2)];
}];
}
これは機能しますが、呼び出し中にウィンドウが縮小され、View Controllerを提示すると-presentViewController:animated:completion:
、新しいコントローラーは拡大縮小された座標系を使用せず、拡大縮小されていない座標系を使用し、UIが壊れます。.transform
表示される新しいビューコントローラにウィンドウを転送する方法はありますか?
または、すべてのUI要素を再配置せずに通話中のステータスバーを処理する別の方法はありますか?