美文网首页
IOS框架:使用文本框类框架

IOS框架:使用文本框类框架

作者: 时光啊混蛋_97boy | 来源:发表于2020-11-05 09:37 被阅读0次

    原创:知识点总结性文章
    创作不易,请珍惜,之后会持续更新,不断完善
    个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈,这些文章记录了我的IOS成长历程,希望能与大家一起进步
    温馨提示:由于简书不支持目录跳转,大家可通过command + F 输入目录标题后迅速寻找到你所需要的内容

    目录

    • 一、UICountingLabel
    • Demo
    • 参考文献

    一、UICountingLabel

    a、运行效果
    UICountingLabel
    b、做一个算数的
    UICountingLabel *myLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 100, 200, 40)];
    myLabel.method = UILabelCountingMethodLinear;// 线性变化
    myLabel.format = @"%d";
    [self.view addSubview:myLabel];
    [myLabel countFrom:1 to:10 withDuration:3.0];
    
    c、使用ease-in-out(默认设置)将计数从5%增加到10%
    UICountingLabel *countPercentageLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 170, 200, 40)];
    [self.view addSubview:countPercentageLabel];
    countPercentageLabel.format = @"%.1f%%";
    [countPercentageLabel countFrom:5 to:10];
    
    d、使用使用数字格式化的字符串进行计数
    UICountingLabel *scoreLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 210, 200, 40)];
    [self.view addSubview:scoreLabel];
    
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    formatter.numberStyle = kCFNumberFormatterDecimalStyle;
    
    // 可以对显示的文本格式进行自定义
    scoreLabel.formatBlock = ^NSString *(CGFloat value)
    {
        NSString *formatted = [formatter stringFromNumber:@((int)value)];
        return [NSString stringWithFormat:@"Score: %@",formatted];
    };
    scoreLabel.method = UILabelCountingMethodEaseOut;// 开始速度很快,快结束时变得缓慢
    [scoreLabel countFrom:0 to:10000 withDuration:2.5];// 可以指定动画的时长,默认时长是2.0秒
    
    e、使用属性字符串计数
    NSInteger toValue = 100;
    UICountingLabel *attributedLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 270, 200, 40)];
    [self.view addSubview:attributedLabel];
    
    // 用于设置属性字符串的格式,如果指定了formatBlock,则将会覆盖掉format属性,因为block的优先级更高
    attributedLabel.attributedFormatBlock = ^NSAttributedString* (CGFloat value)
    {
        NSDictionary *normal = @{ NSFontAttributeName: [UIFont fontWithName: @"HelveticaNeue-UltraLight" size: 20] };
        NSDictionary *highlight = @{ NSFontAttributeName: [UIFont fontWithName: @"HelveticaNeue" size: 20] };
        
        NSString *prefix = [NSString stringWithFormat:@"%d", (int)value];
        NSString *postfix = [NSString stringWithFormat:@"/%d", (int)toValue];
        
        NSMutableAttributedString *prefixAttr = [[NSMutableAttributedString alloc] initWithString: prefix attributes: highlight];
        NSAttributedString *postfixAttr = [[NSAttributedString alloc] initWithString: postfix attributes: normal];
        [prefixAttr appendAttributedString: postfixAttr];
        
        return prefixAttr;
    };
    [attributedLabel countFrom:0 to:toValue withDuration:2.5];
    
    f、获得动画结束的事件
    self.completionBlockLabel = [[UICountingLabel alloc] initWithFrame:CGRectMake(10, 370, 200, 40)];
    [self.view addSubview:self.completionBlockLabel];
    self.completionBlockLabel.method = UILabelCountingMethodEaseInOut;
    self.completionBlockLabel.format = @"%d%%";
    
    __weak UICountingLabelViewController *weakSelf = self;
    self.completionBlockLabel.completionBlock = ^{
        weakSelf.completionBlockLabel.textColor = [UIColor colorWithRed:0 green:0.5 blue:0 alpha:1];
    };
    [self.completionBlockLabel countFrom:0 to:100];
    

    Demo

    Demo在我的Github上,欢迎下载。
    UseFrameworkDemo

    参考文献

    相关文章

      网友评论

          本文标题:IOS框架:使用文本框类框架

          本文链接:https://www.haomeiwen.com/subject/ynlovktx.html