我看到了你的困境。您需要知道兼容模式是否处于活动状态。无论如何,我建议将您的库升级为使用 iOS 7 构建,就好像目标应用程序是为 iOS 7 构建的一样,即使您是为 iOS 6 构建的,您的库视图也会看起来错误,因为运行时是动态链接的,并且其特征由主机应用程序,而不是您的 SDK。
无论如何,这就是我将如何确保您的 webview 正确显示的方法:
获取窗口的边界。窗口始终以纵向表示屏幕的大小。视图被转换到那个空间。这里的关键是 iOS 6 上的窗口调整其视图控制器的大小以考虑状态栏(除了在具有隐藏状态栏的应用程序中),但在 iOS 7 上,它的大小可以放在状态栏下方。然后您可以找到状态栏方向,从窗口的高度(或宽度)中取出必要的 20 像素,并使用 UIKit 将矩形转换为本地视图中的坐标
CGRect windowBounds = [[[UIApplication sharedApplication] keyWindow] bounds];
CGRect advertRect;
if ([[UIApplication sharedApplication] isStatusBarHidden]) {
advertRect = [[[UIApplication sharedApplication] keyWindow] convertRect:advertRect
toView:self.view];
}
else{
//status bar is not hidden
CGRectEdge edge;
switch ([[UIApplication sharedApplication] statusBarOrientation]) {
case UIInterfaceOrientationLandscapeLeft:
edge = CGRectMinXEdge;
break;
case UIInterfaceOrientationLandscapeRight:
edge = CGRectMaxXEdge;
break;
case UIInterfaceOrientationPortraitUpsideDown:
edge = CGRectMaxYEdge;
break;
case UIInterfaceOrientationPortrait:
default:
edge = CGRectMinYEdge;
break;
}
CGRect statusBarRect;
CGRect remainingRect;
CGRectDivide(windowBounds, &statusBarRect, &remainingRect, 20.0, edge);
//converts from window co-ordinates to view co-ordinates
advertRect = [[[UIApplication sharedApplication] keyWindow] convertRect:advertRect
toView:myView];
}
无论您在哪个 iOS 上运行,此矩形都将是状态栏区域下所有剩余窗口空间的矩形。您应该能够使用它来定位您的 Web 视图。