文档章节

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

不孤独的美食家
 不孤独的美食家
发布于 2015/10/20 20:37
字数 487
阅读 305
收藏 4
点赞 0
评论 0

                                                第一部分  实现效果

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

效果如下图:

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


                                           第二部分  封装思路

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

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

一 显示在谁的身上?

二 什么时候应该销毁?

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

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

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

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


第三步 重写他的setter方法


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

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


下面是他的具体使用



© 著作权归作者所有

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

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

珲少 ⋅ 2016/12/09 ⋅ 0

31 天重构学习笔记索引

由于最近在做重构的项目,所以对重构又重新进行了一遍学习和整理,对31天重构最早接触是在2009年10月份,由于当时没有订阅Sean Chambers的blog,所以是在国外的社区上闲逛的时候链接过去的。...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

bootstrap.js学习笔记

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

_好久不见 ⋅ 2015/11/05 ⋅ 0

C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

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

雲霏霏 ⋅ 2014/08/19 ⋅ 0

小蚂蚁学习Bootstrap(1)——导航条的设置和下拉菜单

久闻Bootstrap的大名,也没有亲手实践过,真是让人手痒的。这也难怪,后端的逻辑往往忙活的令人不可开交,平时几乎没有机会来做前端的东西。前两天在动弹里看到有人吐槽,话说什么一个java程...

嗜学如命的小蚂蚁 ⋅ 2015/11/07 ⋅ 2

Bootstrap学习笔记(二)

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

Mr_欢先生 ⋅ 2017/11/02 ⋅ 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 ⋅ 0

31天重构学习笔记下载

前言 前两天写了一篇程序猿也爱学英语(上),有图有真相的文章,写作那篇文章只是自己一时兴起,或者说是自己的兴趣使然。文中的观点只是自己的学习心得和体会,属一家之言且鉴于本人不是学...

KnightsWarrior ⋅ 2013/08/01 ⋅ 0

P2Psim分析笔记(2)-程序架构简述

本文在我的博客《查理的书架》最早发布,并在第一时间更新到51CTO的《Nathan的技术空间》上。 这是我整理P2PSim这个仿真软件包的第二篇笔记。第一篇是《P2PSim在g++ 4.3下的编译》,在第一篇...

技术小胖子 ⋅ 2017/11/17 ⋅ 0

深入理解javascript系列(十六):深入高阶函数

由于这两天,广州-东莞-惠州三日游,所以更新速度有所放慢... 前面我们说过,简单点理解高阶函数,则凡是接收一个函数作为参数的函数,就是高阶函数... 大神说,高阶函数是一个高度封装的过程...

Panthon ⋅ 06/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim编辑模式、命令模式

编辑模式 vim要从一般模式进入编辑模式只要按字母 i 、I、a、A、o、O键就可以了 要从编辑模式回到一般模式按键盘上的Esc键即可。 按键 作用 i 在当前字符前插入 I 在光标所在行的行首插入 o ...

黄昏残影 ⋅ 28分钟前 ⋅ 0

OSChina 周五乱弹 —— 如果有一天不当程序员了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享off的单曲《我唱情歌给你听》 《我唱情歌给你听》- off 手机党少年们想听歌,请使劲儿戳(这里) @小小编辑 :#如果不做程序...

小小编辑 ⋅ 35分钟前 ⋅ 5

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部