【问题标题】:determine safe area for UIInputViewController from UIScreen.main.bounds从 UIScreen.main.bounds 确定 UIInputViewController 的安全区域
【发布时间】:2021-10-31 09:45:17
【问题描述】:

我正在使用 UIInputViewController 制作自定义键盘。

我想在一个矩形内显​​示一个 xib 布局。现在,我从UIScreen.main.bounds 确定了放置我的xib 布局的CGRect 的正确大小。但是,当我将 iPhone 11 旋转到横向时,UIScrren.main.bounds.width 比安全区域宽度长。结果,我的矩形太宽了,一部分没有显示出来。 iphone11 screen

如何确定安全界限?我想用UIScreen.main.safeArea 之类的东西替换UIScreen.main.bounds,但似乎我必须做一些比这更复杂的事情。

我应该只使用UIScreen.main.nativeBounds 吗?如果是这样,我不确定如何从像素转换为点。

【问题讨论】:

    标签: ios uiinputviewcontroller iphone11


    【解决方案1】:

    首先,如果您要检测高度,我不确定您需要什么,因为您没有在键盘视图中使用最大高度。但是为了检测最大宽度,这似乎是您链接的屏幕截图中的问题,请尝试以下操作:

    不要使用UIScreen.main.bounds 来检测宽度,而是使用self.view.bounds.size.width。这似乎是由操作系统设置的,将反映操作系统设置后可以使用的最大宽度。第一次显示屏幕时,我最早能检测到这个值是在viewWillLayoutSubviews()。在屏幕旋转的情况下,我最早可以检测到新的尺寸,旋转后,在viewLayoutMarginsDidChange()事件中。

    由于在显示视图时也会触发 viewLayoutMarginsDidChange() 事件,因此您可以在这两种情况下使用该事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2011-06-29
      • 2017-11-13
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多