Действительно ли возможно добавить UIView на staus панели размера (320 x 20)? Я не хочу скрывать строку состояния, я только хочу добавить его сверху строки состояния.
Вы можете легко сделать это, создав собственное окно над существующей строкой состояния.
Просто создайте простой подкласс 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
в делегате приложения) не имеющим статуса ключа, у вас возникнут проблемы с прокруткой прокрутки вверх при касании строки состояния и т. Д.
Просто чтобы отклонить «Вы не можете делать эти комментарии» ...
Я не знаю как, но я знаю, что это выполнимо. Это делает приложение для чтения каналов под названием Reeder.
Как вы можете видеть на скриншоте, Ридер ставит маленькую точку в правом верхнем углу экрана. Когда вы нажимаете на него. Полоса заполнит всю строку состояния, пока вы не коснетесь ее еще раз, чтобы уменьшить ее размер.