如果将backgroundColor应用于statusBar,则窗口的cornerRadius和maskToBounds不适用于statusBar

时间:2018-09-05 15:46:43

标签: ios swift uistatusbar cornerradius

如果我为statusBar设置背景颜色,为什么cornerRadius和maskToBounds属性不会影响statusBar?

(我是个速成的初学者)

上下文

我要实现的目标:

我想为应用程序中屏幕的每个角落设置cornerRadius。


到目前为止,我做了什么?:

// I added the following in appDelegate:didFinishLaunchingWithOptions
self.window?.layer.cornerRadius = 20
self.window?.layer.masksToBounds = true

如果statusBar没有背景色,则可以在屏幕的每个角落正常工作。

如果为statusBar设置了backgroundColor,则仅将屏幕的底角四舍五入。

我怀疑失败的地方: 我怀疑statusBar在该层顶部的一个层内,该层保存着我要在其中设置cornerRadius属性的窗口,这就是为什么它不使用该属性进行渲染的原因。如果statusBar没有backgroundColor(.clear),则它不会覆盖该窗口,因此我可以在屏幕上看到四个圆角。

这就是为什么我尝试设置statusBar的cornerRadius属性的原因:

// Still in appDelegate:didFinishLaunchingWithOptions
UIApplication.shared.statusBarView?.layer.cornerRadius = 20
UIApplication.shared.statusBarView?.layer.masksToBounds = true
UIApplication.shared.statusBarView?.backgroundColor = .blue

self.window?.layer.cornerRadius = 20
self.window?.layer.masksToBounds = true

如果它的值小于其高度,它会在statusBar中圆角;但如果cornerRadius的值大于statusBar的高度,它会开始表现出怪异,并在其自身和NavigationBar之间留出一些空白。


是否可以设置也会影响statusBar的“全局掩码”或“全局属性”?

我认为仅将CornerRadius设置为顶部拐角是可行的,但是,再次,如果cornerRadius高于其高度,则会呈现出一些不需要的空白。

欢迎以其他方式实现我想要的建议

谢谢:)

0 个答案:

没有答案