如何在iPhone X上通过编程更改底部边缘的颜色?

30

根据打开的键盘或表情板,它会在本地键盘/表情板上发生改变。我原以为它会根据UIInputViewController自动改变颜色,但自定义键盘扩展中并未发生此情况:

输入图像描述


你想要改变主页指示器和地球图标背后的灰色区域的颜色吗? - nathangitter
是的,确切无误。 - VDog
还要注意的是,当你旋转到横屏时,它看起来特别糟糕。 - Jordan H
请检查我在类似问题这里的答案。 - SSemashko
2个回答

37

您可以采取的一种解决方法是:更改ViewController的Viewbackgroundcolor来适应home indicator,并根据需要通过coding单独设置status bar appearance

这将把您的home indicatorstatus bar colorsafe area都变成Chocolate color。在safe area中添加一个separate view以适应其他design,如我所添加的yellow

enter image description hereenter image description here

enter image description here

如果您想为status bar设置不同的颜色,请在viewDidLoad中使用您想要的color调用它 -

func setStatusBarBackgroundColor(color: UIColor) {

        guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
        statusBar.backgroundColor = color
    }  

在此输入图片描述

除此之外,你暂时无法对 home indicatorappearance 进行任何其他更改,除非苹果提供控制的方法。我来给你展示一下。

在此输入图片描述

这些是可用的栏,你可以控制它的 appearance,但苹果没有提供 home indicator bar 选项来进行修改。

这些是唯一可以控制外观的栏 -
导航栏
搜索栏
状态栏
选项卡栏
工具栏

参考链接 - iPhone-X 接口指南


2
你会认为他们会允许我们为自定义应用程序执行此操作,以便您的背景颜色与他们的背景颜色之间没有明显的差异。而且在全屏应用程序中似乎可以正常工作:/ - VDog
1
这并没有回答问题。这会改变你自己应用的外观,而不是自定义键盘扩展中的底部栏。 - Jordan H
1
是的,Joey,这很不幸是真的。我很兴奋地想到这会改变底部键盘的颜色 :/ 但是没有起作用。 - VDog
1
但是这在自定义键盘上不起作用,因为自定义键盘无法访问父应用程序(除了您创建的一个父应用程序)。这意味着我键盘在使用其他应用程序时将具有我的背景颜色,并且底部会有一种刺眼的灰色背景颜色 :/ - VDog
3
即使对于普通应用程序,这也不会改变底部栏的颜色,它只会改变状态栏的颜色。我有没有漏掉什么? - nuynait
显示剩余5条评论

0
如果您想为与顶部和底部边缘不同的布局使用其他背景颜色,或者在切换应用程序时保留状态栏背景颜色,则可以尝试在每个布局nib中添加两个不同高度为50或更多(pt)的具有不同背景颜色的视图。一个将底部对齐到安全区域的顶部,另一个将顶部对齐到安全区域的底部,然后通过IBOutlet引用这两个视图,在代码中以编程方式设置backgroundColor。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接