使用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];
}
}