MaterialKit 侧滑抽屉完整指南:MKSideDrawerViewController + Segue,如何 2 步搭建可拖拽的 Material 侧边栏
MaterialKit 侧滑抽屉完整指南MKSideDrawerViewController Segue如何 2 步搭建可拖拽的 Material 侧边栏【免费下载链接】MaterialKitMaterial design components for iOS written in Swift项目地址: https://gitcode.com/gh_mirrors/ma/MaterialKitMaterialKit 是一个用 Swift 编写的 iOS 版 Material Design 组件库其中的MKSideDrawerViewController提供了一套开箱即用的侧滑抽屉容器支持屏幕边缘滑出、手指跟随拖拽、点击遮罩关闭。本文以零代码基础也能看懂的方式带你在 Storyboard 中通过2 个 Segue完成接线再配上汉堡按钮就能得到一个可拖拽的 Material 风格侧边栏。 先看功能它能做什么在看搭建步骤之前先了解 MKSideDrawerViewController.swift 内置的能力能力说明️ 边缘手势滑出手指从屏幕左/右边缘向内滑动即可拉出抽屉可一键关闭 手指跟随拖拽抽屉打开后按住拖动松手后自动吸附到开/关状态 点击遮罩关闭抽屉打开时背景变暗点一下空白区即收起↔️ 左右方向切换通过drawerDirection切换抽屉从左侧还是右侧滑出 宽度可调drawerWidth默认 240pt支持在 Storyboard 中直接改 状态回调实现MKSideDrawerControllerDelegate监听开/关事件 这个组件的设计参考了经典的 KYDrawerController代码里也标注了出处见文件头部注释 Source/MKSideDrawerViewController.swift#L8。 第 0 步把 MaterialKit 装进项目两种任选其一CocoaPods在 Podfile 中添加pod MaterialKit, 0.4后安装。组件源码统一位于 Source/ 目录由 MaterialKit.podspec#L17 指定直接拷贝把Source/下的 Swift 文件拖进自己的工程即可。环境要求iOS 8.0见 MaterialKit.podspec#L14。 第 1 步Storyboard 中用 2 个 Segue 完成接线这是整个搭建过程的核心全程拖拽操作不写一行代码替换根控制器把 Storyboard 的初始 ViewController 的 Class 改为MKSideDrawerViewControllerCustom Class 填类名Module 填MaterialKit接入主内容拖入你的主界面比如一个 Navigation Controller按住Control从抽屉控制器拖出连接选Custom类型Class 填MKEmbedMainControllerSegue把 Identifier 设为main接入抽屉再拖入一个普通 ViewController 作为侧边栏内容同样用CustomSegueClass 填MKEmbedDrawerControllerSegueIdentifier 设为drawer绑定标识符选中抽屉控制器在 Attribute Inspector 的 User Defined Runtime Attributes 中填入mainSegueIdentifiermaindrawerSegueIdentifierdrawer两个 Segue 的分工其实一目了然MKEmbedMainControllerSegue.swift把 Segue 目标设为主内容mainViewControllerMKEmbedDrawerControllerSegue.swift把 Segue 目标设为抽屉内容drawerViewController。抽屉控制器加载视图时会自动读取这两个标识符并完成内嵌见 Source/MKSideDrawerViewController.swift#L252-L257。官方示例工程里完整的接线方式可以参考 Example/MaterialKit/Base.lproj/Main.storyboard#L22-L29。 第 2 步汉堡按钮一键开关 边缘滑动接线完成后抽屉已经能用了边缘滑动即可打开最后给主界面加一个导航栏汉堡按钮。MaterialKit 的示例代码里用的是自带水波纹的MKButton见 Example/MaterialKit/ViewController.swift#L13-L27核心逻辑只有两行func toggleDrawer() { if let sideDrawerViewController self.sideDrawerViewController { sideDrawerViewController.toggleDrawer() } }这里有两个小设计值得一提sideDrawerViewController是便捷属性它在父控制器链上逐级向上查找任何子页面都能直接拿到抽屉容器实现见 Source/MKSideDrawerViewController.swift#L12-L28toggleDrawer()负责切换开/关见 Source/MKSideDrawerViewController.swift#L317-L321也可以调用setDrawerState(_:animated:)指定明确状态。到这里一个可拖拽的 Material 侧边栏就搭好了 ✅ 屏幕边缘滑出、手指拖拽、遮罩点击关闭全部自动生效。⚙️ 关键参数速查表属性默认值作用出处drawerWidth240抽屉宽度IBInspectable可在 Storyboard 改L119-L121drawerDirection.Left抽屉方向.Left/.RightL103-L112screenEdgePanGestreEnabledtrue是否启用边缘滑动手势L77delegate—监听抽屉开/关状态变化L30-L32mainViewController—主内容控制器可随时替换L123-L153 实用技巧与常见问题1️⃣ 想在抽屉打开/关闭时做点什么实现MKSideDrawerControllerDelegate协议在动画结束时你会收到回调比如刷新数据、隐藏浮层func drawerController(_ drawerController: MKSideDrawerViewController, stateChanged state: MKSideDrawerViewController.DrawerState)2️⃣ 边缘滑动和列表左右滑动手势冲突抽屉已做了手势仲裁抽屉关闭时只响应边缘手势打开后才响应拖拽关闭见 Source/MKSideDrawerViewController.swift#L392-L401。若与个别控件仍冲突可设screenEdgePanGestreEnabled false关闭边缘滑出。3️⃣ 想换成右侧抽屉把drawerDirection改为.Right边缘手势会自动切到右边约束方向也同步调整见 L103-L112。4️⃣ 主内容想整体换掉除了静态 Segue还可以运行时调用transitionFromMainViewController(_:duration:options:animations:completion:)做带动画的内容切换见 L297-L315。 相关文件参考抽屉容器主类Source/MKSideDrawerViewController.swift主内容 SegueSource/MKEmbedMainControllerSegue.swift抽屉内容 SegueSource/MKEmbedDrawerControllerSegue.swift示例 Storyboard2 步接线的完整参考Example/MaterialKit/Base.lproj/Main.storyboard示例入口汉堡按钮开关Example/MaterialKit/ViewController.swift组件总览与安装说明README.md✅ 小结用 MaterialKit 搭侧滑抽屉的完整流程只有两步Storyboard 接线——一个MKSideDrawerViewController 两条 Custom SegueMKEmbedMainControllerSegue/MKEmbedDrawerControllerSegue汉堡按钮开关——子页面里通过sideDrawerViewController?.toggleDrawer()一行搞定。边缘滑出、拖拽跟随、遮罩关闭、方向切换全部内置剩下的就是设计你的抽屉内容了 【免费下载链接】MaterialKitMaterial design components for iOS written in Swift项目地址: https://gitcode.com/gh_mirrors/ma/MaterialKit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Revit模型转点云全攻略:BIM离散化原理与三种实践路径

Revit模型转点云全攻略:BIM离散化原理与三种实践路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 4:57:35 阅读更多 →
插件机制全解:从加载失败报错到排障实践,一文吃透

插件机制全解:从加载失败报错到排障实践,一文吃透

今天聊一个被问得最多、但大多数人其实没整明白的词:plugins。我最近翻开发群、社区和搜索引擎的热词,发现大家搜 plugins 的时候,搜的全是"iar plugins 是干什么的""failed to load plugins web boot: 2 entries did not act…

2026/10/4 4:56:34 阅读更多 →
Java工程师如何用Spring Boot落地RAG:从原理到生产实践

Java工程师如何用Spring Boot落地RAG:从原理到生产实践

1. 为什么 Java 工程师在 AI 浪潮里不该焦虑这两年跟不少做 Java 的朋友聊天,话题绕来绕去总会落到同一个焦虑点上:大模型这么火,训练模型那套东西全是 Python 的天下,PyTorch、CUDA、分布式训练框架,跟我们这些写 Spr…

2026/10/4 4:56:34 阅读更多 →

最新新闻

AI工程化实战:四语言协同构建生产级系统

AI工程化实战:四语言协同构建生产级系统

1. 从零构建AI工程体系:这不是写个模型脚本,而是搭一座桥“AI Engineering from Scratch”这个标题乍看像极了某门网课的副标题,但真正干过三年以上AI落地项目的人一眼就能看出——它根本不是教你怎么调用transformers.pipeline()跑通一个文本…

2026/10/4 5:29:52 阅读更多 →
STM32异常与中断本质区别:从硬件信号到C函数的完整映射链

STM32异常与中断本质区别:从硬件信号到C函数的完整映射链

1. 为什么STM32的“异常”和“中断”总被混为一谈?——从硬件信号到C语言函数的真实映射链刚接触STM32时,我翻遍《参考手册》第10章“中断与异常”,却越看越糊涂:NVIC、SysTick、HardFault、PendSV、SVC……这些名词像一串密码&am…

2026/10/4 5:29:52 阅读更多 →
激光测振仪选型指南:非接触测量如何兼顾精度与效率?

激光测振仪选型指南:非接触测量如何兼顾精度与效率?

在结构动力学测试和振动分析领域,工程师们常常面临一个两难选择:是追求极致的单点测量精度,还是为了获取全场模态振型而牺牲效率?传统的接触式加速度计虽然成熟,但在面对轻质薄壁结构、高温旋转部件或微小电子元件时&a…

2026/10/4 5:29:52 阅读更多 →
M Plan:大模型平台从Token计费到资源当量统一分配的范式升级

M Plan:大模型平台从Token计费到资源当量统一分配的范式升级

1. 这不是一次普通升级:M Plan背后的技术逻辑与真实价值最近朋友圈和开发者群都在刷“Token Plan成为历史”这句话,配上MiniMax新发布的M Plan宣传图——H3视频生成解禁、Claude Code免密接入、Cursor深度整合。很多人第一反应是:“又一个营销…

2026/10/4 5:29:52 阅读更多 →
C# WinForm+SQL Server酒店管理系统实战指南

C# WinForm+SQL Server酒店管理系统实战指南

简介:这是一套基于C# WinForm与SQL Server开发的酒店管理系统完整源码工程,面向.NET初学者及中小型酒店信息化项目开发者,旨在解决传统手工管理效率低、易出错、数据难追溯等问题,助力实现客房预订、入住登记、费用结算、报表统计…

2026/10/4 5:29:52 阅读更多 →
STM32F469与MR25H40CDF的嵌入式MRAM存储方案详解

STM32F469与MR25H40CDF的嵌入式MRAM存储方案详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 5:28:51 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →