Swift实现微信QQ右上角弹出菜单功能

微信 QQ 的右上角弹出菜单,用 Swift 搞起来其实挺方便的。界面小巧,响应也快,适合放几个常用功能按钮,比如“扫一扫”“加好友”这种,点一下就弹出,再点就收回,交互还挺顺的。整个逻辑说白了就是:用一个UIView做容器,加几个UIButton摆成竖排,控制显示隐藏加点动画,效果就有了。

弹出菜单的关键是位置准和动画顺。你可以用UIView.animate配合alphatransform做出滑出的感觉,再加个阴影,立马高级不少。还有个细节别忘了——点别处要自动收回菜单,体验才流畅。

布局上用Auto Layout或者直接设置frame都行,适配 iPhone 和 iPad 也别忘了用Size Classes。多设备用一个菜单组件,省事多了。想偷懒的话,其实也有封装好的库,比如MLMenu,集成一下就能用,挺省心。

按钮事件用addTarget就好,每个按钮点了执行一个回调函数,比如跳转页面啥的。如果菜单状态要控制,建议搞个布尔变量记录一下,写个toggleMenu()方法统一开关,清晰还好维护。

哦对了,如果你想深入了解类似的菜单样式,还可以看看这个Swift 可变菜单实现 QQ 样式按钮弹出效果,里面的弹出逻辑和动画也挺有参考价值。

,如果你想在自己的 iOS App 里加一个看起来专业、交互顺的右上角弹出菜单,这套思路你可以直接拿来用。如果时间紧或者图省事,直接上第三方库更高效。

zip
swift-仿微信QQ右上角菜单功能.zip 预估大小:72个文件
folder
MLMenu-master 文件夹
file
.gitignore 737B
file
MLMenu.podspec 1KB
folder
Example 文件夹
folder
Pods 文件夹
file
Manifest.lock 284B
folder
MLMenu 文件夹
file
LICENSE 1KB
folder
MLMenu 文件夹
folder
Classes 文件夹
file
MLMenuView.m 11KB
file
MLMenuItem.m 533B
file
MLMenuView.h 2KB
file
MLMenuItem.h 776B
file
MLMenuCell.m 3KB
file
MLMenuCell.h 276B
file
MLMenu.h 696B
file
README.md 861B
folder
Local Podspecs 文件夹
file
MLMenu.podspec.json 469B
folder
Pods.xcodeproj 文件夹
folder
project.xcworkspace 文件夹
file
contents.xcworkspacedata 83B
file
project.pbxproj 28KB
folder
Target Support Files 文件夹
folder
MLMenu 文件夹
file
MLMenu-dummy.m 116B
file
MLMenu.modulemap 102B
file
Info.plist 828B
file
MLMenu.xcconfig 402B
file
MLMenu-prefix.pch 195B
file
MLMenu-umbrella.h 355B
folder
Pods-MLMenu_Example 文件夹
file
Pods-MLMenu_Example-frameworks.sh 7KB
file
Pods-MLMenu_Example.release.xcconfig 568B
file
Pods-MLMenu_Example-resources.sh 6KB
file
Pods-MLMenu_Example-acknowledgements.markdown 1KB
file
Info.plist 828B
file
Pods-MLMenu_Example-acknowledgements.plist 2KB
file
Pods-MLMenu_Example.modulemap 128B
file
Pods-MLMenu_Example-dummy.m 142B
file
Pods-MLMenu_Example-umbrella.h 330B
file
Pods-MLMenu_Example.debug.xcconfig 568B
folder
MLMenu 文件夹
file
main.m 321B
file
MLAppDelegate.h 262B
file
MLMenu-Info.plist 2KB
file
MLViewController.m 6KB
file
MLAppDelegate.m 2KB
file
MLTableViewController.h 237B
file
MLTableViewController.m 4KB
file
MLMenu-Prefix.pch 321B
folder
Images.xcassets 文件夹
folder
AppIcon.appiconset 文件夹
file
Contents.json 2KB
file
Contents.json 62B
folder
scan.imageset 文件夹
file
scan@3x.png 1KB
file
Contents.json 338B
file
scan@2x.png 1KB
file
MLViewController.h 509B
folder
Base.lproj 文件夹
file
LaunchScreen.storyboard 2KB
file
Main.storyboard 7KB
folder
en.lproj 文件夹
file
InfoPlist.strings 45B
folder
MLMenu.xcworkspace 文件夹
folder
xcshareddata 文件夹
file
IDEWorkspaceChecks.plist 238B
file
contents.xcworkspacedata 224B
folder
MLMenu.xcodeproj 文件夹
folder
xcshareddata 文件夹
folder
xcschemes 文件夹
file
MLMenu-Example.xcscheme 4KB
folder
project.xcworkspace 文件夹
file
contents.xcworkspacedata 151B
file
project.pbxproj 26KB
folder
Tests 文件夹
file
Tests.m 602B
file
Tests-Prefix.pch 132B
file
Tests-Info.plist 674B
folder
en.lproj 文件夹
file
InfoPlist.strings 45B
file
Podfile.lock 284B
file
Podfile 99B
file
.travis.yml 533B
file
_Pods.xcodeproj 27B
file
LICENSE 1KB
folder
MLMenu 文件夹
folder
Assets 文件夹
folder
.gitkeep 文件夹
folder
Classes 文件夹
file
MLMenuView.m 11KB
file
MLMenuView.h 3KB
file
MLMenuItemsView.h 3KB
folder
.gitkeep 文件夹
file
MLMenuData.m 508B
file
MLMenuData.h 928B
file
MLMenuItemsView.m 7KB
file
README.md 5KB
file
MLMenuGif.gif 428KB
...
zip 文件大小:399.72KB