越狱开发小结

在开发iphone插件的时候发现一个奇怪的问题,如果UIAlertView在hook springboard显示的时候,
会根据现在打开的app的方向来显示方向和缩放,而不是根据springboard的方向(大概是因为springboard
的方向是不会变的)。因此,要在打开一个app的时候,在springboard中显示一个UIAlertView,就需要考
虑横屏问题(尤其是在这个UIAlertView还自己添加了界面元素的情况下),这真是个令人烦恼的问题。

 分析了一下,

插件是hook的springboard的原因,
顶层的窗口是在springboard上的,随着一个app的打开顶层的窗口可能会做相应的改变,导致弹出框的方向改变。如
果换一种方法添加一个UIWindow也可以实现显示一个视图。

 以显示一个HUD为例,只需要在hook的时候,声明一个静态的UIWindow,并设置你需要的这个window的层次属性,
在这个UIWindow上添加HUD就可以实现HUD的显示。不过默认情况下这个UIWindow是隐藏的,如果要显示,需要先
设置UIWindow的显示属性。在这个window显示的时候,springboard的界面被这个window接管,所以下层的各种app
的是打不开的,所以在显示结束以后,需要再把这个window的显示属性设置为关闭状态。

 通过这种方法可以实现一个顶层的窗口来做插件功能中的界面展示。

得出两个解决办法:
1、在显示前关闭已经打开的app,回到springboard。
2、得到当前状态下的设备方向,再自己调整。

第一个实现起来,估计跟做一个sbsetting的freeup差不多。第二个实现起来,似乎也不好办,UIDevice得到
的一直是unknow,而通过UIApplication得到的又是springboard的那个永恒不变的1。好像都陷入死胡同了。
唉,搜索资料继续研究。

研究了一下第一种实现调用

[(SpringBoard *)[UIApplication sharedApplication] _killThermallyActiveApplication];

关闭当前的app.似乎有个执行时间问题。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值