Calling the appropriate setStatusBarHidden per iOS version

前端 未结 4 1242
心在旅途
心在旅途 2020-12-16 02:02

Today my app approved, but I got emails from users says it crash. I figured out that

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:         


        
相关标签:
4条回答
  • 2020-12-16 02:10

    Unfortunately, if you are compiling with the 4.0 SDK using the simulator, the above solutions will give you a warning, which by default is treated as an error:

    warning: 'setStatusBarHidden:animated:' is deprecated (declared at /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:267)
    

    So you can either set 'Treat warnings as errors' to false in the build settings, or you can use macros to conditionally include the correct code. I have my base SDK set to Device 4.0, my target os is 3.1, and am using this macro:

    #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
    #if __IPHONE_OS_VERSION_MIN_REQUIRED > 30100
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];
    #else
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    #endif
    #endif
    

    Note that setStatusBarHidden:withAnimation came available in 3.2.

    0 讨论(0)
  • 2020-12-16 02:12

    I'd recommend you to use the following snipplet of code instead of checking against the version of the os, rather check if a selector is currently available.

    if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
    else 
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
    
    0 讨论(0)
  • 2020-12-16 02:16

    Use only

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    

    instead of

    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    

    It works with no warning

    0 讨论(0)
  • 2020-12-16 02:24

    That's probably the best thing to do, other than limiting your application to >=3.2. anyways, you xcode should give you a warning that the SetStatusBarHidden withAnimation message is not supported ("may not respond to").

    0 讨论(0)
提交回复
热议问题