2017.07.17 18:10* 字数 66 阅读 644评论 0喜欢 5

oc之封装「可输入值」的UIStepper

最终效果

要求:

  • 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];

}

}

  • 用法: 支持xibinitWithFrame

- (void)viewDidLoad {

[super viewDidLoad];

// 值改变回调

_stepper.valueChanged = ^(double value) {

_label.text = [NSString stringWithFormat:@"%.f",value];

};

}

github

https://github.com/BackWorld/HYStepper

oc之封装「可输入值」的UIStepper的更多相关文章

  1. 前端构建工具之gulp(一)「图片压缩」

    前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...

  2. fir.im Weekly - 如何打造 Github 「爆款」开源项目

    最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...

  3. 当你「ping 一下」的时候,你知道它背后的逻辑吗?

    我们在遇到网络不通的情况,大家都知道去 ping 一下,看一下网络状况.那你知道「ping」命令后背的逻辑是什么吗?知道它是如何实现的吗? 一.「ping」命令的作用和原理? 简单来说,「ping」是 ...

  4. 「Android 开发」入门笔记

    「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...

  5. 「SAP技术」SAP 如何看序列号被包在哪些HU里?

    「SAP技术」SAP 如何看序列号被包在哪些HU里? 事务代码SE16 ,表名OBJK, 输入物料号,序列号,HeadTable 输入值SER06, 查询结果如下, 根据objlist, 去表ser0 ...

  6. 「C++ 篇」答应我,别再if/else走天下了可以吗

    每日一句英语学习,每天进步一点点: "Without purpose, the days would have ended, as such days always end, in disi ...

  7. 「学习笔记」Treap

    「学习笔记」Treap 前言 什么是 Treap ? 二叉搜索树 (Binary Search Tree/Binary Sort Tree/BST) 基础定义 查找元素 插入元素 删除元素 查找后继 ...

  8. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  9. SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...

随机推荐

  1. dialog 关闭 清除

    div.dialog({ close: function () { $(this).dialog('destroy').remove(); } });

  2. C#从http上拿返回JSON数据

    C#如何拿到从http上返回JSON数据? 第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) ...

  3. ELK-elkstack-使用消息队列

    日志通过logstash收集到redis,之后从logstash从redis读取数据存入到ES 1. logstash使用redis测试 通过标准输入到redis中 logstash配置与启动 [yu ...

  4. Should we ban guns 英语禁枪议论文

    Should we ban guns ? 我们应该禁枪吗? 英语议论文 Should we ban guns? Author:Pleiades_Antares(www.cnblogs.com/iris ...

  5. Nginx使用教程(七):使用Nginx缓存之proxy cache

    定义缓存目录 <br\>使用您喜欢的文本编辑器打开/etc/nginx/nginx.conf,并在http {区域加入: proxy_cache_path  /var/www/cache ...

  6. A - Packets 贪心

    A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, ...

  7. PHP 缓存技术(一)

    移除光盘

  8. mongoDB2.6,java使用具体解释

    本文使用的环境是:win7_64+Eclipse+maven 一.准备工作 下载java驱动包 驱动包下载地址:http://mvnrepository.com/artifact/org.mongod ...

  9. 解决不能再jupyter notebook中使用tensorflow

    在搭建cuda + Anaconda + tensorflow的开发环境时,在虚拟环境中的jupyter notebook启动后无法导入tensorflow.具体解决方案如下: 1.首先在虚拟环境中安 ...

  10. with as 加上 materialize hint 生成实质临时表

    WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...