• 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

  • 相关阅读:
    面试(转)
    Expression Blend实战开发技巧
    Twelve Principles of Agile Software
    Test Software Engineer
    Web开发工程师必读的15个设计博客
    麻省理工的C/C++的课程
    Orchard:处理1对多的关系
    DotNetNuke Switches to C# !!
    我的那个他
    2011 微软MVP全球大会
  • 原文地址:https://www.cnblogs.com/sundaysgarden/p/10338612.html
Copyright © 2020-2023  润新知