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. margin的两个有趣现象:margin合并和margin塌陷

    margin合并 当两个元素在垂直方向并列,分别设置margin值时会发生一个margin合并的现象 举个例子,有两个div,垂直并列,box1设置margin-bottom:20px,box2设置m ...

  2. Python3 读写文件

    读文件 打开一个文件用open()方法(open()返回一个文件对象): >>> f = open(filename, mode,buffering) #buffering寄存,具体 ...

  3. AI学习---TensorFlow框架介绍[图+会话+张量+变量OP+API]

    TensorFlow的数据流图 TensorFlow的结构分析: 图 + 会话 TensorFlow = 构图阶段(数据与操作的执行步骤被描绘出一个图) + 执行图阶段(使用回话执行构建好的图中操作) ...

  4. windows下数据库文件使用脚本同步到linux下的mysql数据库中

    1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...

  5. vuex最简单的

    https://segmentfault.com/a/1190000009404727 "dependencies": {    "axios": " ...

  6. 正则表达式工具RegexBuddy

    1 下载 RegexBuddy 并安装 安装后的界面如下:     2 切换布局 点击右上角的彩色格子图标,选择 Side by Side Layout:     这种布局的好处是,Create 面板 ...

  7. OAuth2基本概念和运作流程

    OAuth(开放授权)是一个关于授权的开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用.目前的版本是2.0版,本文 ...

  8. tensorflow中的batch_normalization实现

    tensorflow中实现batch_normalization的函数主要有两个: 1)tf.nn.moments 2)tf.nn.batch_normalization tf.nn.moments主 ...

  9. o.s.b.d.LoggingFailureAnalysisReporter

    1.错误信息 *************************** APPLICATION FAILED TO START *************************** Descripti ...

  10. SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能

    SpringBoot注册登录(一):User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接      SpringBoot注册登录(三):注册 ...