在写项目时,要实现一个从下移上来的一个弹出菜单,并且背景变深的这么一个效果,在此分享给大家。

主要说一下思路及一些核心代码贴出来,要想下载源码,

请到:http://download.csdn.net/download/rhljiayou/6280989

一个简单,效果好,比较实用的菜单弹出效果的实现,效果图:

实现方式:将self.view当前页面缩小,在当前页的上面添加一个菜单的view,即在self.view.superview添加。

  1. //显示
  2. - (void) show:(UIView*)parent
  3. {
  4. parentView = parent;
  5. //先隐藏backView,table
  6. backView.alpha = 0;
  7. _table.alpha = 0;
  8. //移动table
  9. [_table setTransform:CGAffineTransformMakeTranslation(0, _table.frame.size.height)];
  10. //父窗口添加本view,---这个会调用viewDidLoad
  11. [parentView.superview addSubview:self.view];
  12. //添加动画,添加到父窗口中,使之从下移动上
  13. [UIView animateWithDuration:0.3 animations:^{
  14. //父窗口缩小
  15. CGAffineTransform t = CGAffineTransformMakeScale(0.9, 0.9);
  16. [parentView setTransform:t];
  17. //显示backview,table
  18. backView.alpha = 1;
  19. _table.alpha = 1;
  20. //移动table,CGAffineTransformIdentity还原原始坐标
  21. [_table setTransform:CGAffineTransformIdentity];
  22. } completion:^(BOOL finished) {
  23. }];
  24. }
  25. //隐藏
  26. - (void) hide
  27. {
  28. //添加动画,添加到父窗口中,使之从下移动上
  29. [UIView animateWithDuration:0.3 animations:^{
  30. //父窗口还原
  31. CGAffineTransform t = CGAffineTransformIdentity;
  32. [parentView setTransform:t];
  33. //显示backview,table
  34. backView.alpha = 0;
  35. _table.alpha = 0;
  36. //移动table
  37. [_table setTransform:CGAffineTransformMakeTranslation(0, _table.frame.size.height)];
  38. } completion:^(BOOL finished) {
  39. [self.view removeFromSuperview];
  40. }];
  41. }
  42. - (void)viewDidLoad
  43. {
  44. [super viewDidLoad];
  45. self.view.backgroundColor = [UIColor clearColor];
  46. //背影黑罩
  47. backView = [[UIView alloc]initWithFrame:self.view.bounds];
  48. backView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3];
  49. [self.view addSubview:backView];
  50. //算出table的CGRect
  51. CGRect rect = self.view.bounds;
  52. int height = _titleArray.count * 44;
  53. rect.origin.y = rect.size.height - height;
  54. rect.size.height = height;
  55. _table = [[UITableView alloc]initWithFrame:rect];
  56. _table.delegate = self;
  57. _table.dataSource = self;
  58. [self.view addSubview:_table];
  59. }

转载地址 : http://blog.csdn.net/rhljiayou/article/details/11768963

这个菜单你可以任意自定义,我这里是一个tableView,你可以写一些有图和文字的添加上去。只需要把源代码稍改,就ok!

IOS实现弹出菜单效果MenuViewController(背景 景深 弹出菜单)的更多相关文章

  1. 【转】swift实现ios类似微信输入框跟随键盘弹出的效果

    swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会 ...

  2. 原生Js_实现简单的下拉折叠菜单(添加弹出动画效果)

    用javascript实现简单的下拉折叠菜单效果 实现步骤 (a)获得各操作的dom对象: (b)在所有菜单按钮对象上添加单击事件: (c)设置所有菜单按钮样式为空,并将当前按钮的样式设置为“acti ...

  3. 使用JavaScript实现弹出层效果

    声明 阅读本文需要有一定的HTML.CSS和JavaScript基础 设计 实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来. 实现 < ...

  4. iphone弹出窗口效果的制作(Core animation, CALayer)

    效果类似人人网微薄客户端的弹出效果 static CGFloat kTransitionDuration = 0.3; - (void)initView { UIWindow *window = [U ...

  5. jQuery弹出层效果

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  6. 使用JavaScript实现弹出层效果的简单实例

    转自:https://www.jb51.net/article/85475.htm 实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来. 实现 ...

  7. 移动端页面弹出对话框效果Demo

    核心思路:设置一个隐藏的(display:none;).背景偏暗的div及其子div作为对话框.当点击某处时,将此div设置为显示. 核心代码例如以下(部分js代码用于动态调整div内容的行高.这部分 ...

  8. 使用movable-view制作可拖拽的微信小程序弹出层效果。

    仿了潮汐睡眠小程序的代码.[如果有侵权联系删除 最近做的项目有个弹出层效果,类似音乐播放器那种.按照普通的做了一般感觉交互不是很优雅,设计妹子把潮汐睡眠的弹层给我看了看,感觉做的挺好,于是乘着有空仿照 ...

  9. Fancybox丰富的弹出层效果

    Fancybox是一款优秀的jquery插件,它能够展示丰富的弹出层效果.前面我们有文章介绍了facybox弹出层效果,相比facybox,fancybox显得功能更为齐全,它除了可以加载DIV,图片 ...

随机推荐

  1. Storm并行度详解

    一.Storm并行度相关的概念 Storm集群有很多节点,按照类型分为nimbus(主节点).supervisor(从节点),在conf/storm.yaml中配置了一个supervisor,有多个槽 ...

  2. Bishops

    题意: 给定一个 $n*n$ 的国际棋盘,求问在上面放 $K$ 个象的方案数. 解法: 首先可以发现黑格和白格互不干扰,这样我们可以将黑格,白格分别求出. 考虑 $f(i,j)$ 表示坐标化后考虑长度 ...

  3. classpath路径指什么

    一.classpath路径指什么 只知道把配置文件如:mybatis.xml.spring-web.xml.applicationContext.xml等放到src目录(就是存放代码.java文件的目 ...

  4. linux中的调试知识---基础gdb和strace查看系统调用信息,top性能分析,ps进程查看,内存分析工具

    1 调试一般分为两种,可以通过在程序中插入打印语句.有点能够显示程序的动态过程,比较容易的检查出源程序中的有关信息.缺点就是效率比较低了,而且需要输入大量无关的数据. 2 借助相关的调试工具. 3 有 ...

  5. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

    在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授 ...

  6. mysql的权限问题SQLException: access denied for @'localhost' (using password: no)

    遇到了 SQLException: access denied for  @'localhost' (using password: no) 解决办法   grant all privileges o ...

  7. xml的的特殊字符转义&

    &amp   ampersand   连接符   & &quot   quotation     双引号    “ &apos  apostrophe   单引号   ...

  8. 【阿里云IoT+YF3300】1.时代大背景下的阿里云IoT物联网的现状和未来

    “未来十到二十年,大家基本已经形成了一个共识,那便是新格局的奠定将由 AI 和物联网技术来支撑.放眼国内,在这些互联网巨头之中,未来真正成为竞争对手厮杀的,阿里和华为是首当其冲,在这两个领域双方分别暗 ...

  9. vue中excel导入导出组件

    vue中导入导出excel,并根据后台返回类型进行判断,导入到数据库中 功能:实现js导入导出excel,并且对导入的excel进行展示,当excel标题名称和数据库的名称标题匹配时,则对应列导入的数 ...

  10. 序列化框架MJExtension详解 + iOS ORM框架

    当开发中你的模型中属性名称和 字典(JSON/XML) 中的key 不能一一对应时, 或者当字典中嵌套了多层字典数组时..., 以及教你如何用 MJExtension 配置类来统一管理你的模型配置, ...