ios - 如何在快速打开侧边菜单时添加透明背景?
问题描述
我正在使用jonkykong/SideMenu的左侧菜单。如果我打开侧边菜单,我需要透明背景视图,如果我关闭,则背景应更改为原始颜色。为此,我正在尝试为侧边菜单设置 alpha 值。
我尝试了两种方法:
1)在这里我已经安装pod 'SideMenu'
并添加了以下代码:
import UIKit
import SideMenu
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
sideMenuConfig()
}
func sideMenuConfig(){
// Define the menus
SideMenuManager.default.menuLeftNavigationController = storyboard!.instantiateViewController(withIdentifier: "UISideMenuNavigationController") as? UISideMenuNavigationController
var set = SideMenuSettings()
set.presentationStyle.presentingEndAlpha = 1
SideMenuManager.default.menuPresentMode = .menuSlideIn
SideMenuManager.default.menuFadeStatusBar = false
SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)
SideMenuManager.default.menuAddScreenEdgePanGesturesToPresent(toView: self.navigationController!.view)
}
}
为什么 pod 无法识别 SideMenuSettings。
错误:使用未解析的标识符“SideMenuSettings”
2) 将 pod 更新为 swift 5 pod'SideMenu', '~> 6.0'
及以下代码:
import UIKit
import SideMenu
class ViewController: UIViewController, SideMenuNavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
menuSettings()
}
func menuSettings(){
let menu = storyboard!.instantiateViewController(withIdentifier: "SideMenuNavigationController") as! SideMenuNavigationController
menu.blurEffectStyle = nil
var set = SideMenuSettings()
set.statusBarEndAlpha = 0
set.presentationStyle = SideMenuPresentationStyle.menuSlideIn
set.presentationStyle.presentingEndAlpha = 0.5
set.menuWidth = min(view.frame.width, view.frame.height) * 0.90
menu.settings = set
SideMenuManager.default.leftMenuNavigationController = menu
}
}
这里的背景视图也随着侧边菜单移动,如下所示如何在 swift 中为侧边菜单添加 alpha 值。
请帮助提供侧面菜单代码。
解决方案
只需创建 SideMenuNavigationController 的子类并在其中设置presentationStyle 的backgroundColor和presentingEndAlpha属性。从现在开始,您可以使用您的 CustomSideMenuNavigationController 作为您的 SideMenuNavigationController。
class CustomSideMenuNavigationController: SideMenuNavigationController {
override func viewDidLoad() {
super.viewDidLoad()
setNavigationBarHidden(true, animated: false)
self.presentationStyle = .menuSlideIn
self.presentationStyle.backgroundColor = .white
self.presentationStyle.presentingEndAlpha = 0.7
self.statusBarEndAlpha = 0.0
self.menuWidth = (UIScreen.main.bounds.width / 5) * 4
}
}
推荐阅读
- windows - 如何将文本框从 Word 文档复制/粘贴到 PDF 文件?
- html - “renderer.setAttribute()”不适用于 matTooltip
- postgresql - postgresql order by和limit,同一条记录出现在多个页面
- c# - 无法使用 Azure signalR 加载类型 MessagePack
- javascript - 创建一个仅接受 0-9 的文本框,并通过为每个数字添加“1”使这些数字出现在另一个文本框中
- angular - Angular - 带有选项卡视图的启动对话框,具有简单的引导表单,不会自动聚焦到每个选项卡表单
- c# - 删除控制字符但保留 ½ 个字符等
- c# - GridSplitter 与 WindowsFormsHost 的使用。比例尺寸问题 (*)
- couchbase - Couchbase 索引建议
- php - Woocommerce API 作为客户获取产品价格