当用户打开互联网共享时,顶部的黑色条变成蓝色并变宽,这导致用户界面稍微下降并导致一些问题,由于脸部现在看起来很奇怪,因为项目已被推下并且可能在底部被切断。有没有办法处理这种情况?如果是这样,是否有任何教程可以提供帮助?我一直在寻找,但还没有想出任何东西!
问问题
141 次
1 回答
2
您可以处理UIApplicationWillChangeStatusBarFrameNotification
和UIApplicationDidChangeStatusBarOrientationNotification
通知,它将告诉您状态栏的新大小。如果需要,您可以使用它来调整您的 UI。避免硬编码任何东西(例如 40pt),而是从通知中获取新的状态栏框架。
如果你只需要高度,你可以很容易地把它拉出来。如果您需要对状态栏框架进行更复杂的操作,则必须将其从屏幕坐标转换为您自己的视图坐标系(例如,如果您有一个全屏布局视图控制器并需要在其下方布置东西) :
- (void)statusBarFrameWillChangeNotification:(NSNotification *)notification
{
NSValue *rectValue = notification.userInfo[UIApplicationStatusBarFrameUserInfoKey];
CGRect statusBarFrame = [rectValue CGRectValue];
// if you just need the height, you can stop here
// otherwise convert the frame to our view's coordinate system
UIWindow *targetWindow = self.view.window;
// fromWindow:nil here converts from screen coordinates to the window
CGRect statusBarFrameWindowCoords = [targetWindow convertRect:statusBarFrame
fromWindow:nil];
CGRect frameRelativeToOurView = [self.view convertRect:statusBarFrameWindowCoords
fromView:targetWindow];
// ...
}
转换坐标在 iOS 7 中尤为重要,因为默认情况下所有视图控制器都具有全屏布局。
于 2013-08-29T11:31:20.687 回答