0

画像表示機能を持つアプリを構築しています。私は UIScrollView の野獣と格闘し (スクロールビューの知識を RSN に投稿したいと思っています)、iPhone の写真アプリの他の視覚効果のいくつかを複製しようとしています。具体的には、画像を表示するときに、コントロールとバーをディゾルブしたいと考えています。

ステータス バー、ナビゲーション バー、およびタブ バーの表示を切り替えて、スクロール ビューだけに画像を表示するメソッドがあります。スクロールビューはフルスクリーンです。ユーザーが何かを行ってから 3 秒後に起動するタイマーがあり (画面を 1 回タップする、次の画像を表示するなど)、timerFired メソッドでメソッドを呼び出してバーをオフにします。画面を 1 回タップすると、バーがオンになります。フルスクリーン状態を切り替える方法は次のとおりです。

- (void)setFullScreen:(BOOL)fullScreen {
    // reset the timer
    [myTimer invalidate];
    [myTimer release];
    myTimer = nil;

    // start animation section
    [UIView beginAnimations:nil context:nil];
        // toggle the status bar    
        [[UIApplication sharedApplication] setStatusBarHidden:fullScreen animated:YES];
        [UIView setAnimationDuration:UINavigationControllerHideShowBarDuration];
        CGFloat alpha = fullScreen ? 0.0 : 1.0;
        // change the alpha to either 0 or 1 based on hiding or showing the bars
        self.navigationController.navigationBar.alpha = alpha;
        self.tabBarController.tabBar.alpha = alpha;

    // do the animations!
    [UIView commitAnimations];

    // restart the timer after we show the bars    
    if (!fullScreen) {
        myTimer = [[NSTimer timerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO] retain];
        [[NSRunLoop currentRunLoop] addTimer:myTimer forMode:NSDefaultRunLoopMode];
    }
}

これは基本的に機能しますが、写真アプリほど見栄えがよくありません。利用可能な非表示のアニメーション メソッドを使用するのではなく、写真アプリのように見えるので、アルファ値をアニメーション化しています。私の問題は、ステータスバーでも同じことをしています。

私の質問: (1) ステータス バーの UIView はありますか? (2) ステータス バーのアルファ プロパティを変更する方法はありますか? (3) 別の UIWindow のステータスバーですか? (4)「合法的な」方法を使用してこれを達成する別の方法はありますか(このアプリをアプリストアに入れる必要があります)?

UIApplication のウィンドウ プロパティをダンプしましたが、ウィンドウは 1 つしかなく、ビュー階層をクロールしましたが、ステータス バーの明らかなビューはありませんでした。

何か案は?

4

1 に答える 1

0

ステータス バーは SpringBoard 自体によって作成され、クラス SBStatusBar (IIRC が UIWindow から継承) のものです。アプリ ストア アプリケーションからはアクセスできません。

于 2010-01-18T17:58:18.537 に答える