Ios 侧边菜单如何覆盖状态栏的一部分
我的iOS应用程序中有一个屏幕,有侧菜单,当我滑动这个侧菜单时,我希望它覆盖状态栏(但我不希望状态栏完全隐藏),我只是想知道与侧菜单重叠的部分,在侧菜单下,而不是在它前面,有人能帮我吗?(我正在应用程序中使用swift 4.2)Ios 侧边菜单如何覆盖状态栏的一部分,ios,swift,Ios,Swift,我的iOS应用程序中有一个屏幕,有侧菜单,当我滑动这个侧菜单时,我希望它覆盖状态栏(但我不希望状态栏完全隐藏),我只是想知道与侧菜单重叠的部分,在侧菜单下,而不是在它前面,有人能帮我吗?(我正在应用程序中使用swift 4.2) (此侧菜单只是另一个我在主ViewController内外设置动画的ViewController)在状态栏上显示侧菜单的一种可能方式是使用带有wndowLevel=.statusBar的UIWindow,该窗口将显示状态菜单UIViewController。下面是我做的
(此侧菜单只是另一个我在主ViewController内外设置动画的ViewController)在状态栏上显示侧菜单的一种可能方式是使用带有
wndowLevel=.statusBar的UIWindow,该窗口将显示状态菜单UIViewController。下面是我做的一个快速实现:
func presentSideMenu() {
let vc = UIViewController() // side menu controller
vc.view.backgroundColor = .red
window = UIWindow()
window?.frame = CGRect(x: -view.bounds.width, y: 0, width: view.bounds.width, height: view.bounds.height)
window?.rootViewController = vc
window?.windowLevel = .statusBar
window?.makeKeyAndVisible()
window?.isHidden = false
window?.addSubview(vc.view)
}
然后,您可以将平移识别器添加到视图中,并相应地更改UIWindow的框架。还是一个简单的片段:
func hideSideMenu() {
window?.isHidden = true
window = nil
}
@objc func pan(recognizer: UIPanGestureRecognizer) {
if recognizer.state == .began {
presentSideMenu()
} else if recognizer.state == .changed {
let location = recognizer.location(in: view)
window?.frame = CGRect(x: -view.frame.width + location.x, y: 0, width: view.frame.width, height: view.frame.height)
} else if recognizer.state == .ended {
hideSideMenu()
}
}
请注意,您应该保持对UIWindow的强引用,否则它将立即被释放。也许你应该考虑是否通过状态栏是一个好主意。希望这有帮助 不,它只是一个ViewController,我添加了另一个ViewController作为它的子对象,并通过按钮动作或滑动在内部和外部设置动画