每个iOS版本调用适当的setStatusBarHidden

iTa*_*rek 10 iphone statusbar

今天我的应用程序获得批准,但我收到用户的电子邮件说它崩溃了.我想通了

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
Run Code Online (Sandbox Code Playgroud)

是问题,因为用户有固件3.1.x这个API不起作用,应用程序崩溃.

所以我用它替换它

    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=3.2)
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
    else 
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)

我的问题......

我做了最好的解决方案吗?

当我设置我的Traget OS固件3.0时,为什么XCODE没有警告我SetStatusBarHidden withAnimation不在3.0中?

我是否必须检查每个API以查看它是否与我的目标操作系统一起使用?

谢谢

sam*_*sam 23

我建议你使用的代码,而不是针对操作系统的版本检查以下snipplet,而检查是否选择当前可用.

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
else 
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)