【发布时间】:2013-02-27 04:06:38
【问题描述】:
在我的应用程序中,我通过简单地缩放整个窗口以适应剩余的屏幕空间来处理状态栏框架的变化:
- (void)application:(UIApplication *)application willChangeStatusBarFrame:
(CGRect)newStatusBarFrame {
UIView* window = [UIApplication sharedApplication].keyWindow;
[UIView animateWithDuration:1 / 3.f animations:^{
CGFloat heightDifference = newStatusBarFrame.size.height -
kWXDefaultStatusBarHeight;
[window setTransform:CGAffineTransformMakeScale(1.f,
heightScaleForCallStatusBar())];
[window setFrame:CGRectOffset(window.frame, 0, heightDifference -
kWXDefaultStatusBarHeight / 2)];
}];
}
这可行,但是如果在调用期间窗口被缩小并且我用-presentViewController:animated:completion: 呈现视图控制器,则新控制器不使用缩放坐标系,它使用未缩放坐标系,并且 UI坏了。知道如何让窗口的.transform 转移到呈现的新视图控制器吗?
或者,是否有另一种方法来处理通话状态栏而不重新排列我的所有 UI 元素?
【问题讨论】:
-
什么是“通话中”? — 哦,你的意思是一个电话电话!
标签: ios scale statusbar uiwindow in-call