したがって、Simon Holroyd 氏による最初のプッシュといくつかの検索の後、この「効果」機能を実現する方法の解決策を見つけました。これはコードです:
statusbarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
編集: ミスターpcholbergは、以前のコードは実際のデバイスでは機能せず、iOS シミュレーターでのみ機能することを正しく指摘したので、彼の推奨に従って編集しました
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
UIView *screenShot = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
[statusbarView addSubview:screenShot];
[statusbarView setClipsToBounds:YES];
[self.view addSubview:statusbarView];
[self setPrefersStatusBarHidden:YES];
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
...
- (BOOL)prefersStatusBarHidden
{
return prefersStatusBarHidden;
}
...
したがって、最初の部分はコンテキストを作成し、サイモンが言及した方法を使用し、ステータスバーでビューを描画し、それをUIImage
2番目の部分は、スナップショットUIView
をviewControllerに追加しますUIView
3 番目の部分では、ステータスバーのブール値を YES に設定し (上記のメソッドで簡単に使用できるようにするため)、メソッドを呼び出して再描画します。
次に、UIView をその場所で機能しないステータスバーとして設定し、元のステータスバーを非表示にするため、二重レンダリングはありません。次に、このビューを[UIView animateWithDuration...
メソッドで使用できます
そして戻ってきたら、アニメーション ブロックの完了ハンドラーで次のコードを使用します。
[statusbarView removeFromSuperview];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
[self setPrefersStatusBarHidden:NO];
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
そして出来上がり!これは、私の質問で説明されている効果として機能します。
これが誰かに役立つことを願っています!