Hi,
I have a game, in which all earlier versions of iPhone (3 - 8) is build without the Statusbar, but now with the iPhone X, after altering my UI to fit the iPhone X screen has 2 blank spots in the top.
Instead of leaving them blank, it would be nice to activate the statusbar to fill them out.
This means that I have to do this by script and in runtime.
I have looked at the UnityPlayer.PlayerSettings.statusBarHidden function, but this will not work :-/
I found this post, but am not able to make it work: https://answers.unity.com/questions/688922/hideshow-status-bar-androidios-on-runtime.html
Here is what I have tried:
Added this to plugins -> ios in my unity project:
StatusBar.mm #import "StatusBar.h" @implementation StatusBar + (void) hideStatusBar: (BOOL)hide { [[UIApplication sharedApplication] setStatusBarHidden: hide withAnimation: UIStatusBarAnimationSlide]; [UnityGetGLViewController() setNeedsStatusBarAppearanceUpdate]; } @end extern "C" { void StatusBarSwitcherPressed(bool isHide) { [StatusBar hideStatusBar: isHide]; } }
StatusBar.h #import
@interface StatusBar : NSObject
{
// Keeps track of available services
NSMutableArray *services;
// Keeps track of search status
NSString* status;
BOOL searching;
}
@end
I then added this c# file inside the plugin folder: using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class StatusBarCtrl { [DllImport ("__Internal")] private static extern void StatusBarSwitcherPressed (bool isHide); public static void StausBarHide(bool isHide) { // Call plugin only when running on real device if (Application.platform != RuntimePlatform.OSXEditor) StatusBarSwitcherPressed(isHide); } }
And then calls this when I have figured out if its an iPhone X or not: StatusBarCtrl.StausBarHide (false);
Hope this makes sense. When running this, nothing happens whether I set it to true or false :-/
Any help is appreciated and thanks in advance :-)
Instead of leaving them blank, it would be nice to activate the statusbar to fill them out.
This means that I have to do this by script and in runtime.
I have looked at the UnityPlayer.PlayerSettings.statusBarHidden function, but this will not work :-/
I found this post, but am not able to make it work: https://answers.unity.com/questions/688922/hideshow-status-bar-androidios-on-runtime.html
Here is what I have tried:
Added this to plugins -> ios in my unity project:
StatusBar.mm #import "StatusBar.h" @implementation StatusBar + (void) hideStatusBar: (BOOL)hide { [[UIApplication sharedApplication] setStatusBarHidden: hide withAnimation: UIStatusBarAnimationSlide]; [UnityGetGLViewController() setNeedsStatusBarAppearanceUpdate]; } @end extern "C" { void StatusBarSwitcherPressed(bool isHide) { [StatusBar hideStatusBar: isHide]; } }
StatusBar.h #import
I then added this c# file inside the plugin folder: using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class StatusBarCtrl { [DllImport ("__Internal")] private static extern void StatusBarSwitcherPressed (bool isHide); public static void StausBarHide(bool isHide) { // Call plugin only when running on real device if (Application.platform != RuntimePlatform.OSXEditor) StatusBarSwitcherPressed(isHide); } }
And then calls this when I have figured out if its an iPhone X or not: StatusBarCtrl.StausBarHide (false);
Hope this makes sense. When running this, nothing happens whether I set it to true or false :-/
Any help is appreciated and thanks in advance :-)