2

使用 Xcode 8.3 制作的横向应用在 iPhone X 上被加了黑框,home bar 被部分禁用,这意味着用户必须向上滑动才能“唤醒它”,然后再次向上滑动才能退出应用。这是我想要在充分利用屏幕尺寸的同时实现的第二个功能,那么如何使用 Xcode 9 复制该功能?

如果我将视图控制器的 prefersHomeIndicatorAutoHidden() 设置为返回 true,主页栏会暂时消失,但每次用户触摸屏幕时它都会返回(有点刺耳),但仍然只需要一次滑动即可退出应用程序。我无法找到任何其他选项来做我想做的事,但显然它应该是可能的,因为它会自动发生在旧应用程序中。

建议?

[注意在 Apple 开发者论坛上交叉发布]

4

1 回答 1

1

此行为是通过preferredScreenEdgesDeferringSystemGestures在 a中实现来设置的UIViewController,如下所示:

- (UIRectEdge)
preferredScreenEdgesDeferringSystemGestures
{
    // prevent home bar from interfering
    return (UIRectEdgeTop | UIRectEdgeBottom);
}

完成此操作后,主栏不应自动隐藏:

- (BOOL)
prefersHomeIndicatorAutoHidden
{
    return NO;
}

另外,在方便的地方(比如viewDidAppear:),需要通知系统这些属性发生了变化:

- (void)
viewDidAppear:(BOOL) isAnimated
{
    [super viewDidAppear:isAnimated];
    if (@available(iOS 11.0, *))
    {
        [self setNeedsUpdateOfHomeIndicatorAutoHidden];
        [self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
    }
}
于 2018-05-09T03:31:14.397 回答