当前位置: 首页 > wzjs >正文

黑群晖做php网站广告设计公司招聘

黑群晖做php网站,广告设计公司招聘,网上怎么申请个人营业执照,wordpress主题 relaxQQ个人中心的侧滑功能(通常称为"抽屉式导航")可以通过以下几种方式在iOS中实现: 主要实现方案 使用第三方库 最快速的方式是使用成熟的第三方库: SWRevealViewController:最流行的侧滑菜单库MMDrawerController:另一…

QQ个人中心的侧滑功能(通常称为"抽屉式导航")可以通过以下几种方式在iOS中实现:

主要实现方案

  1. 使用第三方库

最快速的方式是使用成熟的第三方库:

  • SWRevealViewController:最流行的侧滑菜单库
  • MMDrawerController:另一个功能丰富的抽屉式导航库
  • KYDrawerController:轻量级的实现

示例代码(SWRevealViewController):

// 初始化
let revealViewController = SWRevealViewController(rearViewController: MenuViewController(), frontViewController: MainViewController())// 设置为主窗口根视图 
window?.rootViewController = revealViewController// 添加手势 
revealViewController?.tapGestureRecognizer()
revealViewController?.panGestureRecognizer()
  1. 自定义实现

如果需要完全自定义,可以自己实现:

class DrawerController: UIViewController {private var mainViewController: UIViewController!private var menuViewController: UIViewController!private var isMenuOpen = false private let menuWidth: CGFloat = 300init(mainViewController: UIViewController, menuViewController: UIViewController) {self.mainViewController = mainViewController self.menuViewController = menuViewControllersuper.init(nibName: nil, bundle: nil)}override func viewDidLoad() {super.viewDidLoad()addChild(mainViewController)view.addSubview(mainViewController.view)mainViewController.didMove(toParent: self)addChild(menuViewController)view.insertSubview(menuViewController.view, at: 0)menuViewController.didMove(toParent: self)menuViewController.view.frame = CGRect(x: -menuWidth, y: 0, width: menuWidth, height: view.bounds.height)let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))view.addGestureRecognizer(panGesture)}@objc private func handlePanGesture(_ recognizer: UIPanGestureRecognizer) {let translation = recognizer.translation(in: view)switch recognizer.state {case .changed:let newX = mainViewController.view.frame.origin.x + translation.x if newX >= 0 && newX <= menuWidth {mainViewController.view.frame.origin.x = newX menuViewController.view.frame.origin.x = newX - menuWidth }recognizer.setTranslation(.zero, in: view)case .ended:let velocity = recognizer.velocity(in: view)if velocity.x > 0 {openMenu()} else {closeMenu()}default: break}}func openMenu() {UIView.animate(withDuration: 0.3) {self.mainViewController.view.frame.origin.x = self.menuWidthself.menuViewController.view.frame.origin.x = 0}isMenuOpen = true }func closeMenu() {UIView.animate(withDuration: 0.3) {self.mainViewController.view.frame.origin.x = 0self.menuViewController.view.frame.origin.x = -self.menuWidth }isMenuOpen = false}
}

实现要点

  1. 视图层级:主视图在上,菜单视图在下
  2. 手势处理:需要处理滑动手势(UIPanGestureRecognizer)
  3. 动画效果:使用UIView.animate实现平滑过渡
  4. 边缘手势:可以添加UIScreenEdgePanGestureRecognizer实现从边缘滑出的效果
  5. 遮罩效果:QQ通常会在主视图上添加半透明黑色遮罩

高级优化

  1. 性能优化:使用UIViewPropertyAnimator实现更流畅的交互
  2. 阴影效果:为主视图添加阴影增加层次感
  3. 状态保存:记住菜单的打开/关闭状态
  4. 交互阻断:菜单打开时阻断主视图的交互

SwiftUI实现

如果你使用SwiftUI,可以这样实现:

struct ContentView: View {@State private var offset: CGFloat = 0 @State private var lastOffset: CGFloat = 0@GestureState private var dragOffset: CGFloat = 0var body: some View {let drag = DragGesture().updating($dragOffset) { value, state, _ instate = value.translation.width}.onEnded { value in withAnimation {if value.translation.width > 100 {offset = 300} else if value.translation.width < -100 {offset = 0 } else {offset = lastOffset }}lastOffset = offset }return ZStack(alignment: .leading) {MenuView().frame(width: 300)MainView().offset(x: max(0, offset + dragOffset)).gesture(drag)}}
}

选择哪种实现方式取决于你的项目需求和技术栈。第三方库可以快速实现,自定义实现则更加灵活可控。


文章转载自:

http://6nVPz7Mm.ggtgL.cn
http://M3eIXvJD.ggtgL.cn
http://kDxPhBlD.ggtgL.cn
http://GejIC8QL.ggtgL.cn
http://sWGtd4AL.ggtgL.cn
http://YbZU6QTl.ggtgL.cn
http://jPxjufbM.ggtgL.cn
http://KDyJQdGc.ggtgL.cn
http://8SZOzhZ3.ggtgL.cn
http://34EukSzG.ggtgL.cn
http://B7nS0dBn.ggtgL.cn
http://dY7OrmSp.ggtgL.cn
http://KHgcDsqa.ggtgL.cn
http://TMwKnzBY.ggtgL.cn
http://kv1fBjQv.ggtgL.cn
http://0gJxWJvV.ggtgL.cn
http://ykFX48hu.ggtgL.cn
http://bIr1X0Ib.ggtgL.cn
http://f9b5gJw1.ggtgL.cn
http://QvnvbJ77.ggtgL.cn
http://J3keT5gR.ggtgL.cn
http://pCmAhGHV.ggtgL.cn
http://ZFMwEWCU.ggtgL.cn
http://3DshB9NC.ggtgL.cn
http://hij3j8OT.ggtgL.cn
http://fw8spuTa.ggtgL.cn
http://zaFsZEH5.ggtgL.cn
http://KaTqpxSw.ggtgL.cn
http://ZKWRZWna.ggtgL.cn
http://0sod4L5C.ggtgL.cn
http://www.dtcms.com/wzjs/628175.html

相关文章:

  • 个人电子邮箱怎么注册网站速度优化方案
  • ios网站开发深圳网站制作费用
  • 网站建设名字专业网站设计网站
  • 怎样才能有自己的网站国企网站开发
  • 国展做网站的公司丹阳翼网首页
  • 做网贷网站多少钱重庆公司有哪些
  • 长垣有做网站设计的吗最近发生的新闻事件
  • 免费企业网络推广网站佛山新网站建设
  • 上海人才网官网站首页网络营销策略理论有哪些
  • 网站开发前台与后台的交互seo公司杭州
  • 群网站建设合同锦兴建筑人才招聘平台
  • 网站两侧对联广告图片三优科技 网站开发
  • 网站集群建设参数五莲县网站建设
  • 手机网站建设公司电话咨询做英文网站 是每个单词首字母大写 还是每段落首字母大写
  • 戴尔的网站建设有哪些主要特色有什么好网站做浏览器主页
  • 正规不收费的网站wordpress v2pai
  • 网站建设公司工作岗位说明书电商视觉设计是干什么的
  • 中山网站搜索排名蜂鸟影院高清免费观看
  • 中国建设银行网站太慢了冒险岛cms是什么意思
  • 阿里云网站建设一次付费用织梦做的网站怎样看
  • 做英文简历的网站网站优化工作
  • 邯郸网站优化平台沈阳创造价值网站
  • 南宁市网站电子商务网站建设基础项目实训报告
  • asp.net建立网站司法网站建设与维护 教材
  • 国内ui设计网站前程无忧招聘网
  • 专业外贸网站制作软件开发平台下载
  • 加强思政部网站建设网站模板和源码区别
  • app网站开发住房公积金网站建设项目教程
  • seo外链群发网站朋友做的网站图片不显示
  • 免费网站建设怎样莱芜百度网站建设