使用Xcode 8.3制作的Landscape应用程序在iPhone X上带有字母框,并且主页栏已部分禁用,这意味着用户必须向上滑动以“唤醒”,然后再次向上滑动以退出该应用程序。我想在充分利用屏幕尺寸的同时实现第二个功能,那么如何使用Xcode 9复制该功能?

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

有什么建议吗?

[在Apple开发者论坛上交叉张贴的说明]

最佳答案

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

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

完成此操作后,不应自动隐藏Home Bar:
- (BOOL)
prefersHomeIndicatorAutoHidden
{
    return NO;
}

另外,在方便的地方(例如viewDidAppear:),您需要通知系统这些属性已更改:
- (void)
viewDidAppear:(BOOL) isAnimated
{
    [super viewDidAppear:isAnimated];
    if (@available(iOS 11.0, *))
    {
        [self setNeedsUpdateOfHomeIndicatorAutoHidden];
        [self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
    }
}

08-05 21:54