在 Springboard 上显示自定义 UIView(越狱)

Posted

技术标签:

【中文标题】在 Springboard 上显示自定义 UIView(越狱)【英文标题】:Displaying a Custom UIView on Springboard (Jailbreak) 【发布时间】:2014-05-07 10:18:14 【问题描述】:

我以编程方式创建了一个自定义 UIView。有谁知道我会用什么类和什么方法在跳板上显示它?我希望我的 UIView 显示在跳板上,当用户打开应用程序时,我希望它也显示在那里。我一直在搜索私人标头一段时间,但似乎找不到我要找的东西。我正在使用 iosopendev 开发越狱调整。你能告诉我这个类是视图控制器还是视图?

【问题讨论】:

【参考方案1】:

如果您希望 UIView 显示在任何地方(在 SpringBoard 和应用程序中),您应该在其他 UIWindow 上方创建一个新的 UIWindow 并在其中显示您的视图,如下所示:

UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.windowLevel = UIWindowLevelAlert + 2;
[window setHidden:NO];
[window setAlpha:1.0];
[window setBackgroundColor:[UIColor clearColor]];
[window addSubview:yourView];

【讨论】:

感谢您的回答!我完全没有想到使用 UIWindow.. 你知道我应该挂钩什么类和什么方法吗?我觉得发射方式适合跳板。 -(void)applicationDidFinishLaunching:(id)application;,在 SpringBoard 中,可能是您想要的方法。 (请注意,这也可能在锁屏上显示 UIWindow,具体取决于 windowLevel 的值)。打开应用时,窗口仍然会显示【参考方案2】:

你可以钩住SpringBoard的一些方法,比如:

- (void)applicationDidFinishLaunching:(id)arg1

然后,你的代码应该是这样的:

- (void)applicationDidFinishLaunching:(id)arg1

    %orig;
    NSLog(@"----- applicationDidFinishLaunching -----");
    UIWindow *_uiwindow = [[UIWindow alloc] initWithFrame:CGRectMake(100,100,120,100)];
    _uiwindow.windowLevel = UIWindowLevelStatusBar;
    _uiwindow.hidden = NO;
    [_uiwindow setBackgroundColor:[UIColor redColor]];

要添加更多自定义视图,只需将子视图添加到_uiwindow。希望对您有所帮助。

【讨论】:

以上是关于在 Springboard 上显示自定义 UIView(越狱)的主要内容,如果未能解决你的问题,请参考以下文章

我的应用在 Springboard 上的名称可以跨越两行吗?

如何让 iPhone SpringBoard 为一个应用程序包显示两个或多个图标?

UIGesture 返回 UIImageView 而不是自定义视图

与自定义类而不是 SLComposeServiceViewController 共享扩展

SpringBoard 下滑组视图效果

使用参数创建自定义 UIView 初始化方法