3

私のアプリでは、ウィンドウ全体を残りの画面スペースに収まるように拡大縮小するだけで、ステータスバーフレームの変更を処理します。

- (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要素を再配置せずに通話中のステータスバーを処理する別の方法はありますか?

4

1 に答える 1