通用的排序按钮
排序按钮,使用Core Graphic绘制,可以指定颜色、大小、字体等:
使用场景如下:
1.使用方法
下载demo代码。将HYRankView.h和HYRankView.m代码拖入工程。
然后使用如下代码,即可快速添加一个名称为价格的排序按钮
HYRankView *view = [HYRankView viewWithTitle:@"价格" frame:CGRectMake(0,100,80,40)];
[self.view addSubview:view];
排序按钮默认是未选中状态,只需要一行代码即可改变排序按钮状态。
2.改变选中状态
只要调用makeOpposite方法:
[view makeOpposite];
即可改为按“高到低”的选中状态:
再调用一次makeOpposite方法,即会改为按“低到高”的选中状态,所以makeOpposite的功能为改变排序方式。
但是点击排序按钮,并没有任何响应,为此我们需要添加一个点击事件。
3.添加点击事件
HYRankView继承自UIControl,可以像UIButton等控件一样添加响应事件:
[view addTarget:self action:@selector(clickPrice:) forControlEvents:UIControlEventTouchUpInside];
实现clickPrice:,在方法中调用makeOpposite方法改变排序状态
-(void)clickPrice:(HYRankView*)sender{[sender makeOpposite];
}
4.改变按钮UI
如下代码,创建名称为销量的排序按钮,并改变字体颜色、三角形大小、选中和非选中颜色:
HYRankView *view2 = [HYRankView viewWithTitle:@"销量" frame:CGRectMake(200,100,120,40)];view2.textFont = [UIFont systemFontOfSize:20 weight:UIFontWeightBold];view2.triangleW = 20;view2.selectColor = [UIColor redColor];view2.unselectColor = [UIColor blackColor];[view2 addTarget:self action:@selector(clickSaleCount:) forControlEvents:UIControlEventTouchUpInside];[view2 makeOpposite];[self.view addSubview:view2];self.view2 = view2;
运行效果:
HYRankView及demo代码:
https://github.com/dolacmeng/HYRankViewDemo
相关文章:

如何高效地爬取链家的房源信息(三)
“Python实现的链家网站的爬虫第三部分。”本系列文将以链家南京站为例,使用Python实现链家二手房源信息的爬虫,将数据爬取,并存入数据库中,以便使用。本系列第一部分为基础:如何高效地爬取链家的房源信息(…

Swift学习总结【持续更新】
1、 try、try?、try!的区别: try:需要用catch捕捉异常,如: do {let data try encoder.encode(item) try data.write(to: dataFilePath(), options: .atomic)} catch {print("Error encoding item array:\(error.localize…

svn清理失败且乱码 问题解决(转)
由于昨天在网络不好的状态下频繁尝试svn更新,导致今天svn更新时出现:清理失败且乱码的情况如下: 以下是解决方案:1.下载sqlite3.exe ,地址为:http://download.csdn.net/detail/whyzzj/63465292.在D盘建立文件夹 tools …

UI学习第二篇 (控件)
UIbutton 也是一个控件,它属于UIControl 用的最多的就是事件响应 1. //创建按钮对象 UIButton * _botton [UIButton buttonWithType:UIButtonTypeCustom]; //设置标题 [_botton setTitle:"按住说话" forstate:UIControlStateNormal]; [_botton setTitle:…

如何高效地爬取链家的房源信息(四)
“Python实现的链家网站的爬虫第四部分,最后一部分。”本系列文将以链家南京站为例,使用Python实现链家二手房源信息的爬虫,将数据爬取,并存入数据库中,以便使用。本系列第一部分为基础:如何高效地爬取链家…

Quartz2D在项目中的实际使用
还记得大学刚学iOS那会,从学校图书馆借了本iOS开发的书,有一章节介绍了Quartz2D,当时看得一头雾水,感觉这画画线,画画圆有什么用呢🤔️?工作一段时间后,遇到了一些需求,终…

区别:电感、磁珠和零欧电阻的作用
转载:http://www.cntronics.com/sensor-art/80022840 【导读】电感、磁珠和零欧电阻在电路中是常见的身影。对于这三者在电路中的作用及它们之间的区别,相信还有很多工程师不是很清楚。不过没关系,小编在此为大家奉上一篇关于电感、磁珠和零欧…

【转载】Linux下安装、配置、启动Apache
原文地址:http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.html 安装Apache前准备: 1、检查该环境中是否已经存在httpd服务的配置文件,默认存储路径:/etc/httpd/httpd.conf(这是centos预装的Apache的一个ent版本&#…

MIME格式解析
“ 本文介绍常见的MIME数据格式。”在协议还原中,不可避免地,经常会在各类协议内容中碰到MIME格式,例如标准邮件协议、HTTP协议。那么,什么是MIME呢?MIME是英文Multipurpose Internet Mail Extensions的缩写࿰…

AngularJs--过滤器(filter)
过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果。主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等。ng内置了一些过滤器…

【一步步学小程序】1.创建项目以及TabBar
1.创建项目 如图,创建项目,输入项目名称、选择目录,AppID是唯一标识,我们可以先点如图红框内的测试号,自动生成一个AppID,然后点新建即创建完一个新项目。 2.创建3个页面 确保如图左上角的编译器按钮是…

Yii在window下的安装方法
首先,在http://www.yiichina.com/上下载yii 然后,配置系统环境变量,在win8下,按winx,找到系统->高级系统设置->环境变量->path 把php的运行环境,加入到环境变量中,以分号隔开。如&…

从新手到入门,如何进入协议分析的世界
“ 协议分析与还原自学及入门指南。”有部分朋友给我发消息,说对协议还原很感兴趣,但苦于没人指导,希望得到我的帮助,问我如何进行协议分析的学习。这篇文章从初学者的角度,编列了一个学习指南,希望能对协议…

C# 学习笔记01
想写一个app可以访问数据库,实现对数据库的查询,修改等,突然发现知识实在有限,故选择C#来实现此app。 使用简单的三层架构来作为此app的架构。表现层(UI)、业务逻辑层(BLL)、数据访问…
转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js
iOS js oc相互调用(JavaScriptCore) 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了。 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCor…

【一步步学小程序】2.列表展示
我们上一节已经创建了一个可以点击切换的tabbar。这节我们开始正式敲代码,在首页上展示一个可以上下滚动的课程列表: 首先打开上一节的pages/home/homeMain/homeMain.wxml文件,布局相关代码都会在此文件中,小程序的布局方式类似H…

git分支的合并
原文: http://gitbook.liuhui998.com/3_3.html http://gitbook.liuhui998.com/5_3.html 一、如何分支的合并在git中,可以使用git merge 和git rebase两个命令来进行分支的合并。git merge 和git rebase在大体上都差不多,下文主要以git merg…

【一步步学小程序】3. 使用自定义组件(component)
上一节创建了一个包含多个课程数据的列表。这一节我们用自定义组件(component),来优化列表页面,即如图,我们把每个课程单元格封装为组件。 使用组件的好处: 自定义组件可以在不同的页面中重复使用将复杂…

《lua程序设计(第二版)》学习笔记(五)-- 函数基础
-- 第 5 章 函数-- 一种对语句和表达式进行抽象的主要机制 print(os.date()); -- 打印日期 Sun Apr 20 12:44:46 2014 -- 一看到sun,感慨广州没有晴天 -- 函数没有参数也要括号 -- 特殊情况:只有一个参数的时候, 并且参数一个string/table构造…

HTTP协议中的chunked编码解析
“ HTTP协议中的chunked传输编码全接触。”在HTTP协议中,服务器发往客户端的数据中,通常都包括HTTP头和HTTP体,当存在HTTP体的时候,HTTP体的长度通常是由HTTP头内的“Content-Length”字段确定。就像下图:不过…

html-css实例
<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>求签</title><style type"text/css">*{margin: 0px;padding: 0px;font-family: "微软雅黑",arial,sans-serif;}body{background: url(im…

【Swift】变量/常量/类型总结
1、变量(Variable) 变量,可以理解为存放某一类型的值的容器,如: var count:Int var shouldRemind:BOOL var text:String var list:[ChecklistItem]一个变量的数据类型,决定了它能存放什么类型的数据。有些…

ODBC更新记录集提示”记录集为只读“
创建的ODBC应用程序默认的记录集不具有只读属性,但是再更新记录表时会提示”记录集为只读“,这是为什么呢? 今天看书找到了答案: 因为MFC中的数据库类不支持需要连接两个或者多个表的记录集更新,如果选择数据源的时候选…

gzip格式分析与识别
“ 介绍gzip格式,识别gzip压缩的数据流量。”在协议分析过程中,经常会发现gzip压缩的数据,例如在HTTP协议中,在HTTP头中会标示,内容编码为gzip、DEFLATE。但是,还有很多情况,例如一些非HTTP协议…

CSS 和 JS 动画哪个更快
基于Javascript的动画暗中同CSS过渡效果一样,甚至更加快,这怎么可能呢?而Adobe和Google持续发布的富媒体移动网站的性能可媲美本地应用,这又怎么可能呢? 本文逐一遍览了基于Javascript的DOM动画库,如Veloci…

C语言之分支结构 if(一)
一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if语句后面的大括号可以省略:…

react-native安装Ant Design
1.集成Ant Design到项目 项目根目录中执行命令: npm install ant-design/react-native --save2.集成按需加载babel-plugin-import到项目 项目根目录中执行命令: npm install --save-dev babel-plugin-import3.创建.babelrc文件 根目录中创建新文件…

车联网APP,安全设施薄弱的山寨品
“ 目前的车联网APP,几乎没有安全性可言。”在网络上闲逛,一不小心,逛进了车联网的领地。物联网、车联网、IoT如火如荼,各个大佬、院士加持,看着相当的高大上。但是,在伟岸的外表下,到底真实的情…

CSS里总算是有了一种简单的垂直居中布局的方法了
<!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"/><title>无标题文档</title><style type"text/css"&…

【星榜单】盘点那些坑爹的国产手机们
【星榜单】盘点那些坑爹的国产手机们 国产手机的那些坑爹事儿很多,中庸到基本大众脸的设计还算是有点良心的,那些奇葩的名字、所谓的高配低价低却又山寨级的做工、饥饿营销让你看得到买不到、伪小清新却又华而不实放眼过去的国产智能手机比比皆是&#x…