oc之封装「可输入值」的UIStepper
2017.07.17 18:10* 字数 66 阅读 644评论 0喜欢 5
最终效果
要求:
- Platform: iOS7.0+
- Language: Objective-C
- Editor: Xcode6.0+
实现
- 思路
UIButton + UITextField + UIButton + NSLayoutConstraint - 核心代码
1. setters
#pragma mark - setters
// 当前值
-(void)setValue:(double)value{
if (value < _minValue) {
value = _minValue;
}
else if (value > _maxValue){
value = _maxValue;
}
_minusBtn.enabled = value > _minValue;
_plusBtn.enabled = value < _maxValue;
_valueTF.text = [NSString stringWithFormat:@"%.0f",value];
_value = value;
_valueChanged ? _valueChanged(_value) : nil;
}
// 最大值
-(void)setMaxValue:(double)maxValue{
if (maxValue < _minValue) {
maxValue = _minValue;
}
_maxValue = maxValue;
}
// 最小值
-(void)setMinValue:(double)minValue{
if (minValue > _maxValue) {
minValue = _maxValue;
}
_minValue = minValue;
}
// 是否可输入值
-(void)setIsValueEditable:(BOOL)isValueEditable{
_isValueEditable = isValueEditable;
_valueTF.enabled = _isValueEditable;
}
2. 事件处理
#pragma mark - action
// 按钮点击
-(void)actionForButtonClicked: (UIButton*)sender{
if ([sender isEqual:_minusBtn]) {
self.value = _value - _stepValue;
}
else if([sender isEqual:_plusBtn]){
self.value = _value + _stepValue;
}
}
// 输入事件
-(void)actionForTextFieldValueChanged: (UITextField*)sender{
if ([sender isEqual:_valueTF]) {
self.value = [sender.text doubleValue];
}
}
- 用法: 支持xib和initWithFrame
- (void)viewDidLoad {
[super viewDidLoad];
// 值改变回调
_stepper.valueChanged = ^(double value) {
_label.text = [NSString stringWithFormat:@"%.f",value];
};
}
github
https://github.com/BackWorld/HYStepper
oc之封装「可输入值」的UIStepper的更多相关文章
- 前端构建工具之gulp(一)「图片压缩」
前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
- 当你「ping 一下」的时候,你知道它背后的逻辑吗?
我们在遇到网络不通的情况,大家都知道去 ping 一下,看一下网络状况.那你知道「ping」命令后背的逻辑是什么吗?知道它是如何实现的吗? 一.「ping」命令的作用和原理? 简单来说,「ping」是 ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- 「SAP技术」SAP 如何看序列号被包在哪些HU里?
「SAP技术」SAP 如何看序列号被包在哪些HU里? 事务代码SE16 ,表名OBJK, 输入物料号,序列号,HeadTable 输入值SER06, 查询结果如下, 根据objlist, 去表ser0 ...
- 「C++ 篇」答应我,别再if/else走天下了可以吗
每日一句英语学习,每天进步一点点: "Without purpose, the days would have ended, as such days always end, in disi ...
- 「学习笔记」Treap
「学习笔记」Treap 前言 什么是 Treap ? 二叉搜索树 (Binary Search Tree/Binary Sort Tree/BST) 基础定义 查找元素 插入元素 删除元素 查找后继 ...
- SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...
随机推荐
- ELK 处理 Percona 审计日志(填坑)
前提 1.有强烈的审计需求. 2.能允许10%-15%左右的性能损失. 3.有强烈的对数据库操作实时查看需求(一般都是为了领导要求). Logstash 比较坑的配置 1 2 3 4 5 6 7 ...
- 高通平台如何使用QPST抓DUMP
一 :确认手机状态 手机系统死机白屏后,使用USB线 连接手机和计算机.打开计算机设备管理器 ,当其中与手机相关的端口只有DIAG 口 项(9006端口)时,表明手机处于DUMP 模式,可以抓DUMP ...
- Ubuntu 12.04上安装HBase并运行
Ubuntu 12.04上安装HBase并运行 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.HBase的安装 在官网上下载HBase-1.1.2 ...
- Should we ban guns 英语禁枪议论文
Should we ban guns ? 我们应该禁枪吗? 英语议论文 Should we ban guns? Author:Pleiades_Antares(www.cnblogs.com/iris ...
- 《数据库技术基础与应用(第2版)》学习笔记——第7章~
从这章开始,操作的内容开始增多,概念的东西越来越少,可能跟学校的教学目的有关,但是跟我的学习目的不匹配,就不再继续整理. 总结:这本书适合大学本科生学习和了解数据库的相关知识以及Access和SQL ...
- 【Teradata】并行操作工具
1.psh并行shell //单机模式 psh date psh pdestate -a psh verify_pdisks //交互模式 psh psh.>help psh.>selec ...
- node express 上传文件
npm install --save multer var fs = require('fs'); var multer = require('multer'); var upload = multe ...
- [JS]js中判断变量类型函数typeof的用法汇总[转]
1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean&q ...
- WPF中应用字体图标
一.什么是字体图标 我们在进行GDI(图形界面)编程的过程中图标是不可少的.近些年随着网络的繁荣和移动应用的繁荣,矢量图的应用越来越火. 矢量图是一种用数学方法描述的.由一系列点和线组成的图,因此相比 ...
- Python实现矿池
自建P2POOL矿池详细教程(高级篇)http://8btc.com/article-1804-1.html p2pool比特币矿池教程综合篇(包含linux矿池教程)https://www.cybt ...