Представление Adding о StatusBar в iPhone

Действительно ли возможно добавить UIView на staus панели размера (320 x 20)? Я не хочу скрывать строку состояния, я только хочу добавить его сверху строки состояния.

62
задан CajunLuke 16 May 2012 в 16:19
поделиться

2 ответа

Вы можете легко сделать это, создав собственное окно над существующей строкой состояния.

Просто создайте простой подкласс UIWindow со следующим переопределением initWithFrame:

@interface ACStatusBarOverlayWindow : UIWindow {
}
@end

@implementation ACStatusBarOverlayWindow
- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
        // Place the window on the correct level and position
        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:@"statusBarBackground.png"];
        [self addSubview:backgroundImageView];
        [backgroundImageView release];

        // TODO: Insert subviews (labels, imageViews, etc...)
    }
    return self;
}
@end

Теперь вы можете, например, в контроллере представления в вашем приложении, создать экземпляр вашего нового класса и сделайте это видимым.

overlayWindow = [[ACStatusBarOverlayWindow alloc] initWithFrame:CGRectZero];
overlayWindow.hidden = NO;

Помните, что можно вмешиваться в состояние клавиш окна, используя - (void) makeKeyAndVisible или подобное. Если вы сделаете свое главное окно ( UIWindow в делегате приложения) не имеющим статуса ключа, у вас возникнут проблемы с прокруткой прокрутки вверх при касании строки состояния и т. Д.

87
ответ дан 24 November 2019 в 16:38
поделиться

Просто чтобы отклонить «Вы не можете делать эти комментарии» ...

Я не знаю как, но я знаю, что это выполнимо. Это делает приложение для чтения каналов под названием Reeder.

Как вы можете видеть на скриншоте, Ридер ставит маленькую точку в правом верхнем углу экрана. Когда вы нажимаете на него. Полоса заполнит всю строку состояния, пока вы не коснетесь ее еще раз, чтобы уменьшить ее размер.

A small icon on the top right of the screen alt text

3
ответ дан 24 November 2019 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: