Как имитировать resizable StatusBar в приложении Spotify iOS

Я пытался выяснить, как Spotify создает пользовательский интерфейс, когда приложение переходит в автономный режим. Кажется, что StatusBar изменил размер, но на самом деле они просто отображают представление ниже и StatusBar размер всех контроллеров во всем приложении. Я попытался подклассифицировать UINavigationController , подклассифицируя UIWindow , UIWindow размер окна, но ничего не работает для каждого случая.

Интересная вещь о приложении Spotify заключается в том, что их решение, похоже, все еще работает, когда UIViewController подклассы iOS UIViewController представлены модально (как видно на изображении ниже, отображая MFMailComposeViewController Apple, вы можете сказать, что это не настраиваемый контроллер из-за UIBarButtonItems) ,

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

Приложение Spotify iOS

это очень опасно. Я делал это в прошлом, и у меня были кошмары. Ниже кода, который работает в iOS4 и поддерживает изменения ориентации.

 - (void) _adjustViewControllerforTicker { TickerView* vv = [ApplicationContext getTickerView]; if ([PreferenceDataModel isFxTickerOn]&& self.navigationController.view.frame.origin.y==0) { CGRect tableRect = self.tableView.frame; self.tableView.frame = CGRectMake(tableRect.origin.x,tableRect.origin.y, tableRect.size.width, tableRect.size.height -20); UINavigationController *nav = self.navigationController; CGRect gframe = CGRectOffset(self.navigationController.view.frame, 0, 20); self.navigationController.view.frame = gframe; if (!vv) { vv = [[TickerView alloc] initWithFrame:CGRectMake(0, 0, 480, 20)]; [nav.view addSubview:vv]; [vv release]; self.tableView.contentInset=UIEdgeInsetsMake(0,0,20.0,0.0); [ApplicationContext setTickerView:vv]; } if (![PreferenceDataModel isTickerOn]) { self.tableView.contentInset= UIEdgeInsetsZero; if (vv){ [vv removeFromSuperview]; vv=nil; [ApplicationContext setTickerView:nil]; } } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [self _adjustViewControllerforTicker]; } - (void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self _adjustViewControllerforTicker]; TickerView* vv = [ApplicationContext getTickerView]; if ([vv count]) { [vv startAnimation]; } } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self _adjustViewControllerforTicker]; } 

И вот как это выглядит:

введите описание изображения здесь

  • ViewController загружен, но представление не отображается
  • Телефонная связь / Кордова с несколькими CDVViewController
  • Существует ли метод recursiveDescription для иерархии диспетчера представлений?
  • AdLovin Banner Ad Crash на iPad
  • Как можно вернуться к предыдущему виду программно без UINavigationController?
  • Показать контроллер модального просмотра с пользовательским фреймом в iPad
  • Объяснение различия между автоматическиAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgeForExtendedLayout в iOS7
  • iPhone, как добавить вид контроллера контроллера на другой вид контроллера?
  • Передача данных с контроллера просмотра на сцену Cocos2D
  • Принудительное вращение устройства с помощью + tryRotationToDeviceOrientation failing
  • Каков наилучший способ программно добавлять и удалять представления и их контроллеры?
  • Давайте будем гением компьютера.