DDExpandableButton

https://github.com/ddebin/DDExpandableButton

Purpose - 目的

DDExpandableButton is a single-file iOS 5.0+ non-ARC class (ARC compatible) designed to be used like an expandable UIButton ; as seen in the iOS Camera app for the flash button.

DDExpandableButton 是一个MRC的类(兼容ARC),用来点击时展开UIButton;与iOS照相机应用的flash按钮一样。

Originally inspired by ExpandyButton.

Properties - 属性

A DDExpandableButton has the following properties:

有以下属性列表:

  • @property (nonatomic,assign) BOOL expanded; Current button status (if expanded or shrunk). 当前按钮的状态(展开了还是未展开)

  • @property (nonatomic,assign) BOOL useAnimation; Use animation during button state transitions. 在button状态改变时是否使用动画效果

  • @property (nonatomic,assign) BOOL toggleMode; Use button as a toggle (like "HDR On" / "HDR Off" button in camera app). 是否用作开关(像照相机应用中的“HDR On / HDR Off”按钮一样)

  • @property (nonatomic,assign) CGFloat timeout; To shrink the button after a timeout. Use 0 if you want to disable timeout. 一个未展开的超时时间,用0可以禁用超时时间

  • @property (nonatomic,assign) CGFloat horizontalPadding; Horizontal padding space between items. 按钮间的水平距离

  • @property (nonatomic,assign) CGFloat verticalPadding; Vertical padding space above and below items. 按钮间的垂直距离

  • @property (nonatomic,assign) CGFloat borderWidth; Width (thickness) of the button border. 按钮边缘的厚度

  • @property (nonatomic,assign) CGFloat innerBorderWidth; Width (thickness) of the inner borders between items. 按钮内边缘的厚度

  • @property (nonatomic,assign) NSUInteger selectedItem; Selected item number. 选择的第几个

  • @property (nonatomic,retain) UIColor *borderColor; Color of the button and inner borders. 按钮内边缘颜色

  • @property (nonatomic,retain) UIColor *textColor; Color of text labels. 文本的颜色

  • @property (nonatomic,retain) UIFont *labelFont; Font of text labels. 文本的字体

  • @property (nonatomic,retain) UIFont *unSelectedLabelFont; Font of unselected text labels.Nil if not different from labelFont. 没有选择的按钮的字体,如果为nil的话,就没有区别

  • @property (nonatomic,readonly) NSArray *labels; Access UIView used to draw labels. 所有label

Methods - 方法

A DDExpandableButton has the following methods:

DDExpandableButton 有着如下的一些方法:

  • - (id)initWithPoint:(CGPoint)point leftTitle:(id)leftTitle buttons:(NSArray *)buttons; Init method where you can specify leftTitle and buttons. 初始化方法,你可以用来指定标题以及按钮

  • - (void)setSelectedItem:(NSUInteger)selected animated:(BOOL)animated; Animated version of - (void)setSelectedItem:(NSUInteger)selected. 这个方法- (void)setSelectedItem:(NSUInteger)selected的动画版本

  • - (void)setExpanded:(BOOL)expanded animated:(BOOL)animated; Animated version of - (void)setExpanded:(BOOL)expanded. 这个方法- (void)setExpanded:(BOOL)expanded的动画版本

  • - (void)setLeftTitle:(id)leftTitle; Set left title view : you can use a NSString, an UIImageor any UIView (but the view must implement DDExpandableButtonViewSource protocol). 设置左侧view:你可以用字符串,UIImage或者任何UIView

  • - (void)setButtons:(NSArray *)buttons; Set buttons views : you can use a NSString, anUIImage or any UIView (but the view must implement DDExpandableButtonViewSource protocol). 设置buttons,你可以用字符串,UIImage或者任何UIView

  • - (void)disableTimeout; If you want to disable timeout shrunk. You can set timeout to 0 also. 如果你想关闭超时时间,你可以将timeout设置成0

  • - (void)updateDisplay; When modifying button parameters, use this method to update button display. 但编辑按钮的参数时,你需要用这个方法来更新按钮的显示

Protocols - 协议

The DDExpandableButtonViewSource protocol, used when you specify the title or the different buttons, has the following methods:

DDExpandableButtonViewSource 协议,当你在制定标题或者不同的按钮时,有着如下的一些方法:

  • - (CGSize)defaultFrameSize; Returns default frame size of the view, used when expanding the button. 展开按钮的时候返回view的默认尺寸

  • - (void)setHighlighted:(BOOL)highlighted; Optional, used to change appearance of selected items. 可选的,用来修改选中按钮的外观

Usage - 使用

Example : a button with four text labels and a hook when value change.

NSArray *buttons = [NSArray arrayWithObjects:@"Black", @"Red", @"Green", @"Blue", nil];
DDExpandableButton *colorButton = [[[DDExpandableButton alloc] initWithPoint:CGPointMake(20, 70) leftTitle:@"Color" buttons:buttons] autorelease];
[[self view] addSubview:colorButton];
[colorButton addTarget:self action:@selector(toggleColor:) forControlEvents:UIControlEventValueChanged];

[翻译] DDExpandableButton的更多相关文章

  1. 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...

  2. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  3. [翻译]开发文档:android Bitmap的高效使用

    内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...

  4. 【探索】机器指令翻译成 JavaScript

    前言 前些时候研究脚本混淆时,打算先学一些「程序流程」相关的概念.为了不因太枯燥而放弃,决定想一个有趣的案例,可以边探索边学. 于是想了一个话题:尝试将机器指令 1:1 翻译 成 JavaScript ...

  5. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  6. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  7. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  8. 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?

    0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

随机推荐

  1. 编写dimgr脚本学到的知识及技巧

    编写dimgr是为了管理手机上的镜像,在此总结下过程中学到的知识及技巧(不讨论具体用法). 参数处理 以往处理脚本参数直接用循环加判断语句,若是脚本只有简单参数,这无疑是简便可行的方法.但当需要处理复 ...

  2. Linux下串口編程遇到的接收数据错误及原因(0x0d,0x11接收错误)

    摘要:Linux下串口编程遇到的接收数据错误及原因 来源:https://dotblogs.com.tw/k/2012/07/24/73572 近日在调试串口的时候发现,另一设备向我ARM板的串口发送 ...

  3. dockerfile基础命令

    一直想写一个, 但发现网上有很多了, 直接copy把 如何使用 Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等.当前目录下包含Dockerfile,使用命令build来 ...

  4. GreenPlum:基于PostgreSQL的分布式关系型数据库

    GreenPlum是一个底层是多台PostgreSQL分表分库的分布式数据库,它有如下特点 支持标准SQL,几乎所有PostgreSQL支持的SQL,greenplum都支持 支持ACID.分布式事务 ...

  5. javascript 方法总结(Array篇)

    1.toString:返回以数组种的每个值得字符串形式拼接而成得一个以逗号分割得字符串 toStringArr = [1, 2, 3, 4, 5, 6] console.log(toStringArr ...

  6. 微信 weui 初体验

    最近微信推出他们自己的H5组件(weui)组件的优点有两个: 做为开发者的我们可以不用写太多css,直接拿过来就可以用. 组件都有点击态,大大增加了用户的体验好感 高清屏幕下 border : 0.5 ...

  7. Struts2和MVC的简单整合

    1.首先还是创建一个简单Maven的项目,导入jar包, <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  8. 转载:Remote Validation

    http://www.jb51.net/article/89474.htm 大多数的开发者,可能会遇到这样的情况:当我们在创建用户之前,有必要去检查是否数据库中已经存在相同名字的用户.换句话说就是,我 ...

  9. [PHP] 重回基础(date函数和strtotime函数)

    date():格式化一个本地时间或者日期,当前时间 2016年5月13日 15:19:49 使用函数date(),输出当前是月份中的第几天,参数:String类型 d 例如:echo date(&qu ...

  10. XML序列化与REST WCF Data Contract匹配时遇到的2个问题

    问题一: XML序列化与RESTful WCF Data Contract不能匹配,无法传递类的值. 现象: 给类加上[Serializable]Attribute,可以成功序列化,但是WCF Ser ...