【问题标题】:iPhone screen shifts when entering foreground进入前台时 iPhone 屏幕移动
【发布时间】:2012-07-03 23:54:48
【问题描述】:

我注意到,当我的 iPhone 应用程序在 iPad2(iOS 版本 4.3.3)上暂停后进入前台时,iPhone 屏幕似乎在一瞬间向上移动了一小部分。我的理解是,iOS 在暂停应用程序之前会拍摄屏幕快照,以便在恢复时快速恢复,但我不清楚它为什么会被转移。状态栏占位符和 iPhone 图像不会上移,只有 iPhone 屏幕的其余部分会上移。我在 5.0 模拟器中没有看到这个问题。

任何想法发生了什么或如何解决这个问题?谢谢

【问题讨论】:

    标签: iphone ios ipad


    【解决方案1】:

    当应用程序加载时,它会显示您在应用程序包中拥有的 default.png 文件。如果此图像与应用程序的第一个屏幕相同(苹果建议您应该这样做),那么它会显示此图像,然后在应用程序完成初始化后显示实际屏幕。您可以通过向上移动一两个像素来编辑 png 文件(您只需猜测并检查以查看您需要的确切内容)。

    另一种可能性是您的 default.png 大小不正确,因此在应用实际启动时正在调整其大小。检查尺寸是否适合您正在测试的设备。

    【讨论】:

    • 感谢您的回复。最初,我认为它也是 default.png,但是当我按下 Home 按钮暂停应用程序然后稍后恢复它时,我的应用程序中的任何屏幕都会发生这种情况。
    【解决方案2】:

    将状态棒设置为最初隐藏对我来说是这样的。

    状态栏最初是隐藏的 YES

    这解决了它

    - (void) setStatusBarVisible: (NSTimer *)timer 
    {
         [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
    }
    
    - (void)applicationWillEnterForeground:(UIApplication *)application
    {
         [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
    
         [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(setStatusBarVisible:) userInfo:nil repeats:NO];
     }
    

    似乎设置然后重置(在短暂延迟后)状态栏解决了这个问题。

    这解决了它,但它不应该首先发生。

    【讨论】:

      【解决方案3】:

      是的,当您再次回到前台时会发生这种情况。它发生在我身上,我已经通过使用

      解决了这个问题
       (void)layoutSubviews
      

      这意味着我在 layoutSubviews 方法中绘制的东西会发生变化并且工作正常。

      有关此check my problem & solution的更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        相关资源
        最近更新 更多