3

ステータスバーの上にビューを追加しようとしています。私はこのSO投稿に従っています: iPhoneのステータスバーにビューを追加する

何らかの理由で、ウィンドウを作成して Hidden を NO に設定すると、ビューがステータスバーの上に表示されないように見えます。この実装は ios5.1 でも機能しますか?

ありがとう!

これは私のカスタム UIWindow クラスです:

@implementation StatusBarOverlay

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    // Place the window on the correct level and position
    self.hidden = NO;
    self.windowLevel = UIWindowLevelStatusBar+1.0f;
    self.frame = [[UIApplication sharedApplication] statusBarFrame];

    // Create an image view with an image to make it look like a status bar.
    UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:self.frame];
    backgroundImageView.image = [UIImage imageNamed:@"bar_0.png"];
    backgroundImageView.animationImages = [NSArray arrayWithObjects:[UIImage     imageNamed:@"bar_1.png"],
                                           [UIImage imageNamed:@"bar_2.png"],
                                           [UIImage imageNamed:@"bar_3.png"],
                                           nil];
    backgroundImageView.animationDuration = 0.8;
    [backgroundImageView startAnimating];
    [self addSubview:backgroundImageView];
}
return self;
}

ビューコントローラーで、新しいウィンドウを作成し、viewDidLoad でこれを呼び出しました。

StatusBarOverlay *overlayWindow = [[StatusBarOverlay alloc] initWithFrame:CGRectZero];
[overlayWindow makeKeyAndVisible];

ただし、ビューはまだ表示されません。理由について何か考えはありますか?

プライベート API を使用したエラーを示すスクリーンショット

4

3 に答える 3

4

アプリケーションのウィンドウ レベルを UIWindowLevelStatusBar に設定します。

self.window.windowLevel = UIWindowLevelStatusBar;

次に、独自のビューをアプリケーション ウィンドウの任意の場所に追加します。

[[[UIApplication sharedApplication]delegate].window addSubview:yourview];

この問題は最近私に来ました、そして私はちょうどこの方法でそれを解決しました

于 2013-01-26T10:41:41.207 に答える
0

最後に、UIWindow をサブクラス化し、それをアプリケーション AppDelegate のプライマリ UIWindow にしました。カスタム ビューを追加し、ウィンドウ レベルを UIWindowLevelStatusBar に設定して、ステータス バーの上に表示します。

于 2012-07-02T12:16:01.543 に答える
0

新しいものを作成してUIWindow、それにビューを追加できます。ウィンドウ フレームを に設定し[[UIApplication sharedApplication] statusBarFrame]、呼び出しmakeKeyAndVisibleて表示します。

于 2012-06-14T10:45:19.573 に答える