2

当我在我的 iPhone 设置下打开人员热点时,我的 iPhone 应用程序的 UI 会在下方移动 20 像素。我该如何处理这个问题。

有没有办法可以检测热点是打开还是关闭。?

谢谢维卡斯

4

2 回答 2

6

您可以使用以下选择器获得多种尺寸,每当热点或其他通知出现时,statusBarFrame 将变为 40px 高。

CGRect rect;
rect = [[UIScreen mainScreen] bounds]; // Get screen dimensions
NSLog(@"Bounds: %1.0f, %1.0f, %1.0f, %1.0f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);

rect = [[UIScreen mainScreen] applicationFrame]; // Get application frame dimensions (basically screen - status bar)
NSLog(@"App Frame: %1.0f, %1.0f, %1.0f, %1.0f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);

rect = [[UIApplication sharedApplication] statusBarFrame]; // Get status bar frame dimensions
NSLog(@"Statusbar frame: %1.0f, %1.0f, %1.0f, %1.0f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
于 2012-09-25T06:22:20.313 回答
1

您有多种选择来处理此问题:

  • 对于支持 iOS 6 之前的 iOS 版本的应用程序,在您的视图上使用正确的自动调整大小掩码,并确保您的所有自定义视图都能正确设置其自动调整大小掩码。
  • 对于支持 iOS 6+ 的应用程序,请使用自动布局和约束。
  • 对于具有大量自定义绘图或视图的应用程序,在适当的时候覆盖视图控制器上的 -viewWillLayoutSubviews 和/或自定义视图上的 -layoutSubviews。
于 2012-09-25T06:33:54.987 回答