Итак, после первоначального нажатия г-на Саймона Холройда и некоторых поисков я нашел решение о том, как достичь этой «эффекта». Это код:
statusbarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
EDIT: господин pcholberg правильно указал, что прежний код не работает на реальном устройстве, только на IOS Simulator, так что я редактировал его рекомендации
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
Вторая часть добавляет снимок UIView
к моей ViewController-х UIView
И третья часть устанавливает для моего bool для строки состояния значение 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)];
}
и вуаля! Это работает как описанный эффект в моем вопросе.
Надеюсь, это поможет кому-то!
Почтовый ящик, как представляется, не использует стандартную строку состояния. Они приклеивают дополнительный текст там, поэтому я предполагаю, что они используют что-то вроде https://github.com/myell0w/MTStatusBarOverlay, но обновлены для iOS 7. –
Создайте контроллер контейнера и добавьте свое меню и главное представление как childViewControllers. Затем вы можете установить строку состояния, скрытую в диспетчере меню, и она сохранит строку состояния другого контроллера режима просмотра, не используя скриншоты (которые, на мой взгляд, кажутся невосприимчивыми). – user
@user у вас был пример проекта? Если да, можете ли вы поделиться этим? –