0

我已经使用 swift 在我的应用程序顶部实现了一个 pageViewIndicator。我一直在我的个人 iPhone 上测试它,它已经工作了,但是在使用 iPhone X 模拟器时,我注意到它消失在凹口后面,仅仅是因为我没有提到将它放在安全区域或安全区域是尚未正确配置。这是比较:

iPhone 8 上的页面控制器 iPhone X 上的页面控制器

这似乎是一个简单的问题,但我目前还没有找到任何关于如何处理这个问题的适当支持:主要建议是调整 safeAreaInsets,但我不明白如何将其应用于AutoLayout功能。我已经尝试向 pageController 添加一个 topAnchor 约束,但是甚至可以使用基本算法对其进行编辑吗?

pageControl.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
4

3 回答 3

4

没有必要“调整”任何东西。安全区域的全部意义在于,它的顶部在非 X iPhone 上位于状态栏下方,在 iPhone X 上位于“缺口”下方。这就是安全区域的用途

因此,只需将页面控件的顶部固定到安全区域的顶部即可。这是它在 iPhone 5s 模拟器上的外观:

在此处输入图像描述

下面是它在 iPhone X 模拟器上的样子:

在此处输入图像描述

于 2018-02-03T19:19:43.843 回答
0

我发现了我的问题,这实际上是我刚刚监督的问题:我忘了添加

pageControl.translatesAutoresizingMaskIntoConstraints = false

在将其添加为子视图之前添加到 pageControl。有了这个,我能够分配以下约束来正确地将我的 pageController 定位在我想要的位置:

let safeViewMargins = self.view.safeAreaLayoutGuide
pageControl.topAnchor.constraint(equalTo: safeViewMargins.topAnchor).isActive = true
pageControl.leadingAnchor.constraint(equalTo: safeViewMargins.leadingAnchor).isActive = true
pageControl.trailingAnchor.constraint(equalTo: safeViewMargins.trailingAnchor).isActive = true

然后,这可以在所有设备上完美运行。

于 2018-02-03T21:57:14.880 回答
-2

我目前正在升级的应用程序中遇到了同样的问题。它在主屏幕的右侧有一列按钮。在右侧带有凹槽的横向方向中,按钮被部分切断。如果不需要,我不想移动按钮,因为这会显着减小左侧消息区域的尺寸,尤其是在纵向模式下。

我在 Xcode 中没有看到与“安全区域”相对应的约束,并且不想进入动态定位的兔子洞,所以我的解决方案是将方向限制为纵向和横向右(这意味着缺口左边)。

如果我们有每个设备类型的方向限制,那就太好了,但不要为此屏住呼吸。

希望在几年内,这种丑陋的时尚潮流会消失。

于 2019-05-29T15:45:38.543 回答