正在打电话或者正在使用定位等都会使iPhone状态栏出现蓝条,并多出20个像素点
1.在使用App的过程中,出现蓝条,我们可以通过监听状态栏高度的改变来适配我们的UI
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(statusBarChanged)
name:UIApplicationWillChangeStatusBarFrameNotification
object:nil];
- (void)statusBarChanged{
//重新适配有问题的UI
}
这种处理使用了通知,所以只能在当前页面注册了通知的情况下,才能监听到状态栏的改变,如果先出现蓝条,再进入页面,因为通知还没来得及注册,系统就发送了通知,所以并没有监听到状态栏的改变。
2.先出现蓝条,再进入页面的情况下适配UI
#define SafeStatusBarHeight ([UIApplication sharedApplication].statusBarFrame.size.height==40?20:0)//设置为全局的
//使用
_selectedPanel.frame = CGRectMake(0, SafeStatusBarHeight, 200.0f, 54.0f);
获取状态栏的高度,如果高度是40就说明页面被向下挤压栏20个像素点,如果高度是20,就是正常的
在设置控件的frame的时候,加入SafeStatusBarHeight就可以了