文档章节

学习笔记:对下拉菜单的简单封装

不孤独的美食家
 不孤独的美食家
发布于 2015/10/20 20:37
字数 487
阅读 308
收藏 4

                                                第一部分  实现效果

当我们点击一下标题按钮时,就弹出一个下拉菜单,点一下其他地方,下拉菜单退出或者从屏幕上消失

效果如下图:

当我们点击一下首页的时候,弹出下拉菜单,效果如下图(当然图片还未做处理)


                                           第二部分  封装思路

当我们点击标题按钮时,会弹出菜单,而且有文字,有图片,那么这个控件应该就是按钮,它既可以响应点击事件,也可以设置图片文字。

那么,这个下拉菜单应该是个什么控件好了,也就是应该继承自那个控件好了?作为其他控件的容器,选UIVIew是最合适的了,选好了容器。接下来就是它的实际需求了。

一 显示在谁的身上?

二 什么时候应该销毁?

三 它里面应该放些什么了?而菜单里面的东西又应该归谁了?

为了不被其他任何控件遮挡住,他应该要放在当前窗口的上面。它里面还要有内容,所以应该申明一个UIView的属性去保存,而这个View的管理由谁去引用管理了,应该是个控制器。

既然谈到了封装,那就应该有一个类方法,方便快捷的创建这个下拉菜单控件,它的.h头文件声明如下

.m文件的初始化方法如下图


第三步 重写他的setter方法


第四步  实现.h文件中的方法

第五步 为了监听菜单的消失或者显示,需要监听,所以设置他的代理去监听就行了,


下面是他的具体使用



© 著作权归作者所有

共有 人打赏支持
不孤独的美食家
粉丝 88
博文 159
码字总数 48705
作品 1
长沙
高级程序员
私信 提问
Bootstrap响应式前端框架笔记七——下拉菜单

Bootstrap响应式前端框架笔记七——下拉菜单 在Bootstrap的Css框架中,下拉菜单属于组件。一个完整的下拉菜单应该有两部分组成,一个触发按钮与一个选项列表。触发按钮dropdown-toggle类来创...

珲少
2016/12/09
52
0
bootstrap.js学习笔记

模态弹出框 Bootstrap框架中的模态弹出框,分别运用了“modal”、“modal-dialog”和“modal-content”样式,而弹出窗真正的内容都放置在“modal-content”中,其主要又包括三个部分: ☑ 弹...

_好久不见
2015/11/05
0
0
bootstrap3 - 按钮下拉菜单

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>按钮下拉菜单</title> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1"/> <link href......

iNiL0119
2015/09/28
147
0
Bootstrap学习笔记(二)

7.响应式表单 表单组样式:将和表单元素包含其中,可以获得更好的排列 表单元素样式:常用于、、元素 内联表单样式(用于form表单):可以使元素一行显示 在一侧加入附加内容 或 类应用到一系...

Mr_欢先生
2017/11/02
0
0
C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

  在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架)。单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF...

雲霏霏
2014/08/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

崛起于Springboot2.X之通讯WebSocket(40)

技术简介:Springboot2.0.3+freemaker+websocket 1、添加pom依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

木九天
9分钟前
0
0
Java常用四大线程池用法以及ThreadPoolExecutor详解

为什么用线程池? 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处-理效率 2.线程并发数量过多,抢占系统资源从而导致阻塞 3.对线程进行一些简单的管理 在Java中...

孟飞阳
11分钟前
0
0
Netty+Websocket 实现一个简易聊天室

后台代码 /** * 服务端 */public class ChatServer {public static void main(String[] args) throws Exception {int port=8080; //服务端默认端口new ChatServer().bind...

这很耳东先生
13分钟前
1
0
一个本科学生对Linux的认知

我是一名大三的普通一本大学的软件工程的一名学生,学校开设了一些关于系统开发的课程,纸上得来终觉浅,学校的课程课时较短,想要在56个课时之内学会一些公司需要的技能,无疑是纸上谈兵,一...

linuxprobe16
14分钟前
0
0
如何选择开源许可证?

如何为代码选择开源许可证,这是一个问题。 世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,...

吴伟祥
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部