我在StackOverflow上发现了这个问题,但无法解决我的问题。
Calling the appropriate setStatusBarHidden per iOS version
if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
else
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
我将操作系统部署目标设置为3.0,但我仍然收到警告'setStatusBarHidden:animated:is deprecated'
如果可能的话,我想在项目中没有警告,而不是删除它的黑客。有没有办法设置项目来删除此警告?
我已将项目库SDK设置为4.0。 目标Base SDK到4.0,部署目标SDK到3.0。
我为“所有配置”进行了这些设置
更新:显然警告仅出现在模拟器中,而不是在为设备设置时出现。
答案 0 :(得分:4)
弃用警告意味着您正在使用将来不再支持的内容。此特定语法列为已弃用here。您可以通过不使用已弃用的方法来消除警告。您应该使用setStatusBarHidden:withAnimation:而不是
如果您希望在3.0和3.2+上支持此功能,则必须根据目标版本编写条件代码。有一些关于预处理器宏和函数的有用信息可以帮助您here。
答案 1 :(得分:3)
这可能会有所帮助,如果你为旧设备开发,不确定最后一个,但它看起来不错:
if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
else if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: animated:)])
{
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
}
else if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:)])
{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}
然而,在我将设备从iPhone切换到Universal并返回iPhone之后,出现了问题。花了一些时间才意识到部署目标已经改为4.3,所以将其更改回3.0会使警告消失。
答案 2 :(得分:1)
您可以像这样执行以立即克服警告
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
(void) methodUsingDeprecatedStuff { //use deprecated stuff }
或
只需在每次使用弃用的内容之前粘贴此行以避免警告
#pragma GCC诊断警告“-Wdeprecated-declarations”
这将删除警告。
希望它会对你有所帮助。