我正在用UIInputViewController制作一个自定义键盘。
我想在一个矩形内显示一个xib布局。现在,我确定了正确的CGRect的大小,我把我的xib布局,从UIScreen.main.bounds
。但是,当我将iPhone 11旋转到横向方向时,UIScrren.main.bounds.width
比安全区域宽度长。结果,我的矩形太宽,部分没有显示。iphone11屏幕
如何确定安全边界?我想用UIScreen.main.safeArea
之类的东西代替UIScreen.main.bounds
,但似乎我必须做一些比这更复杂的事情。
我应该只用UIScreen.main.nativeBounds
吗?如果是这样,我不确定如何从像素转换为点。
首先,如果你正在检测高度,我不确定你会需要什么,因为你不使用键盘视图中的最大高度。但是要检测最大宽度,这似乎是您链接的屏幕帽中的问题,请尝试以下操作:
用self.view.bounds.size.width
代替UIScreen.main.bounds
来检测宽度。这似乎是由操作系统设置的,并将反映操作系统设置后您可以使用的最大宽度。当第一次显示屏幕时,我最早可以检测到这个值是在viewWillLayoutSubviews()
中。在屏幕被旋转的情况下,我最早可以检测到新的尺寸,在旋转之后,是在viewLayoutMarginsDidChange()
事件。
由于viewLayoutMarginsDidChange()
事件也在视图显示时被触发,因此您可以在两种情况下使用该事件。