我在AppDelegate实现函数didFinishLaunchingWithOptions中添加了以下代码
if([[[[UIDevice currentDevice] systemVersion] floatValue]> = 7){
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
}
以及正在调用的此函数:
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
int a = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
int w = [[UIScreen mainScreen] bounds].size.width;
int h = [[UIScreen mainScreen] bounds].size.height;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
UIDeviceOrientation orientationa = [[UIDevice currentDevice] orientation];
if (orientation==4)
{
self.window.frame = CGRectMake(20,0,w-20,h+20);
}else if(orientation==1)
{
self.window.frame = CGRectMake(0,20,w,h);
}else
{
self.window.frame = CGRectMake(-20,0,w+20,h+20);
}
}
这可以使状态栏即使在旋转时也不会重叠,但是当点击向后端发出请求的按钮时,它会发生变化并重叠,直到它再次旋转,任何人都知道为什么会发生这种情况?我怀疑它可能与ECSlidingViewController有关吗?
答案 0 :(得分:1)
试试这个代码&在Info.plist中设置此视图查看基于控制器的状态栏外观=否
- (void) viewDidLoad
{
[super viewDidLoad];
float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0f)
{
CGRect tempRect;
for (UIView *sub in [[self view] subviews])
{
tempRect = [sub frame];
tempRect.origin.y += 20.0f; //Height of status bar
[sub setFrame:tempRect];
}
}
}
答案 1 :(得分:0)
为了支持带有ECECSlidingViewController的ios7,只要您使用导航控制器取消选中所有选项以从View控制器XIB扩展边缘,并且您不使用导航控制器,您可以使用Viewcontroller.m文件中的以下代码。
-(void)viewDidLayoutSubviews
{
if([[[UIdevice currentdevice]systemversion]floatvalue] >=7.0f){
CGRect screen = [UIScreen mainscreen]bounds];
CGRect frame = self.view.frame;
frame.origin.y = 20.0f;
frame.size.height = screen.size.height - 20;
}
[self.view layoutsubviews];
}
并在视图中执行完成后添加以下内容
[application setStatusbarStyle:UIStatusBarStyleTranslucent];
并在plist文件中添加ViewControllerBasedStatuschangedAppearence为NO