【发布时间】:2014-09-17 17:14:24
【问题描述】:
创建全屏分享扩展时,有没有办法控制状态栏?
我试过了:
- 基于视图控制器的状态栏 + PreferredStatusBarStyle
- 状态栏样式
- 状态栏最初是隐藏的
状态栏似乎没有什么影响,它只是继承自打开共享扩展的视图。是否有解决方法,或者它是按设计必须如何工作的?
【问题讨论】:
标签: ios objective-c ios8
创建全屏分享扩展时,有没有办法控制状态栏?
我试过了:
状态栏似乎没有什么影响,它只是继承自打开共享扩展的视图。是否有解决方法,或者它是按设计必须如何工作的?
【问题讨论】:
标签: ios objective-c ios8
目前无法更改扩展视图 (http://openradar.appspot.com/radar?id=6397505050771456) 的状态栏样式。似乎扩展的状态栏使用与调用扩展的应用相同的样式。
【讨论】:
如果您在父视图控制器上调配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, "v@:");
}
【讨论】: