2014-09-17 5 views
7

При создании полноэкранного расширения общего доступа есть ли способ контролировать строку состояния?Share Стиль строки состояния расширения

Я пробовал:

  • вид контроллер на строку состояния + preferredStatusBarStyle
  • статус бар в стиле
  • Строка состояния не изначально скрыты

Ничто, кажется, влияет на строку состояния, то просто унаследован от представления, открывшего расширение общего доступа. Есть ли обходной путь или это по дизайну, как он должен работать?

ответ

6

В настоящее время нет способа изменить стиль строки состояния для внутреннего вида (http://openradar.appspot.com/radar?id=6397505050771456). Кажется, что строка состояния для расширения использует тот же стиль, что и приложение, которое называется расширением.

0

Вы можете изменить его, если вы используете метод preferredStatusBarStyle на родительском контроллере. Поскольку вы можете сделать это без использования каких-либо непубличных API-интерфейсов, это * должно быть безопасным для приложений.

static UIStatusBarStyle statusBarStyle; 

static UIStatusBarStyle preferredStatusBarStyle(id self, SEL _cmd) 
{ 
    return statusBarStyle; 
} 

void setPreferredStatusBarStyleOnRootVC(UIStatusBarStyle style, UIViewController *vc) 
{ 
    statusBarStyle = style; 
    static BOOL swizzeld = NO; 
    if(swizzeld) 
    { 
    [vc setNeedsStatusBarAppearanceUpdate]; 
    return; 
    } 

    swizzeld = YES; 

    UIViewController *parent; 
    while((parent = vc.parentViewController)) 
    vc = parent; 

    class_addMethod(vc.class, @selector(preferredStatusBarStyle), (IMP)&preferredStatusBarStyle, "[email protected]:"); 
} 
+1

Метод swizzled вызывает вызов, но, похоже, он не влияет на внешний вид строки состояния. – Ziconic

+0

Swizzling public methods технически не использует частные API. – AriX

Смежные вопросы