zoukankan      html  css  js  c++  java
  • oc之封装「可输入值」的UIStepper

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

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

    1334681-e2aedca4e2a684b7.gif

    最终效果

    要求:

    • 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

  • 相关阅读:
    JS面向对象编程的实现
    初见Javascript
    详解promise
    radio单选按钮组操作
    cookie欺骗实战案例
    XSS攻击
    前端如何实现异步加载
    日常问题
    求1+2+...+n
    二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/sundaysgarden/p/10338612.html
Copyright © 2011-2022 走看看