iOS 8.3上的自定义UIWindow iPad可在模拟器上运行,但不适用于设备

iOS 8.3上的自定义UIWindow iPad可在模拟器上运行,但不适用于设备,第1张

概述我们有UIWindow代码已经工作了多年,以建立一个“阻止”屏幕.我们最近注意到,在阻止程序以横向显示时,在iOS 8.3 iPad上,阻止程序偏移256像素.奇怪的是: 1)这不会发生在模拟器上,只发生在设备上 2)如果阻挡器以纵向显示,则可以 3)如果阻挡器以纵向显示然后旋转到横向,则可以. 4)间隙是256个像素,这是宽度和高度之间的差异,即1024-778 = 256. 我们最近更新到Xc 我们有UIWindow代码已经工作了多年,以建立一个“阻止”屏幕.我们最近注意到,在阻止程序以横向显示时,在iOS 8.3 iPad上,阻止程序偏移256像素.奇怪的是:

1)这不会发生在模拟器上,只发生在设备上

2)如果阻挡器以纵向显示,则可以

3)如果阻挡器以纵向显示然后旋转到横向,则可以.

4)间隙是256个像素,这是宽度和高度之间的差异,即1024-778 = 256.

我们最近更新到Xcode 6,所以这也是一个因素……

通过使用默认的Xcode Master Detail项目并对“insertNewObject”方法进行一些小的更改,可以很容易地复制此问题,如下所示:

UIWindow *blocker;    - (voID)insertNewObject:(ID)sender {            blocker = [[UIWindow alloc] init];            [blocker setBackgroundcolor:[UIcolor colorWithRed:.0 green:.0 blue:.0 Alpha:.8]];            [blocker makeKeyAndVisible];            CGRect r = CGRectMake(0,768,1024);            [blocker setFrame:r];    }

如果您在模拟器上运行此代码,并点击“”按钮,您将获得:

这是我们所期望的.

但是,在我们的8.3 iPad设备上运行的同样精确的代码为我们提供了:

为什么模拟器工作和设备没有的想法?建议?其他要尝试的事情?

[更新]我们只找到一个设备,这是一个问题,iPad 2.我们还发现在UIWindow上设置rootVIEwController“解决”了这个问题.

解决方法 这是我们使用的修复:

blocker = [[UIWindow alloc] init];[blocker setBackgroundcolor:[UIcolor colorWithRed:.0 green:.0 blue:.0 Alpha:.8]];UIVIEwController *blockerRoot = [UIVIEwController new];blocker.rootVIEwController = blockerRoot;CGRect r = [[UIScreen mainScreen] bounds];[blocker setFrame:r];[blocker makeKeyAndVisible];

我们还能够删除旋转调整代码,因为现在视图控制器为我们正确管理它(至少对于iOS 8及更高版本).这是我们现在使用的代码:(在旋转屏幕时调用)

- (voID)adjustForRotation    {        if ([UIUtil iOS8OrLater]){        // iOS 8 handles this correctly,no need for adjustments...            return;        }        UIInterfaceOrIEntation io = [[UIApplication sharedApplication] statusbarOrIEntation];        if (UIInterfaceOrIEntationIsLandscape(io)){            CGRect r = [[UIScreen mainScreen] bounds];            CGfloat x = r.size.height / 2.0;            CGfloat y = r.size.wIDth / 2.0;            self.center = CGPointMake(x,y);               }        return;    }
总结

以上是内存溢出为你收集整理的iOS 8.3上的自定义UIWindow iPad可在模拟器上运行,但不适用于设备全部内容,希望文章能够帮你解决iOS 8.3上的自定义UIWindow iPad可在模拟器上运行,但不适用于设备所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1027036.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存