• CABasicAnimation


    #import <UIKit/UIKit.h>
    
    @interface TJProgressView : UIView
    @property(nonatomic,assign)CGFloat progressValue;
    - (void)showInView:(UIView *)baseView;
    @end
    //
    //  TJProgressView.m
    //  CurveProgressDemo
    //
    //  Created by MJ on 15/6/12.
    //  Copyright (c) 2015年 SNWFMJ. All rights reserved.
    //
    
    #import "TJProgressView.h"
    #define kContainerViewSize CGSizeMake(30.f, 25.f)
    #define kPadding 5.f
    @interface TJProgressView ()
    {
        UIView *leftView;
        UIView *middleView;
        UIView *rightView;
        UIView *containerView;
    
    }
    @end
    @implementation TJProgressView
    - (instancetype)init
    {
        if (self = [super init])
        {
            [self setUp];
        }
        return self;
      }
    - (void)setUp
    {
        containerView = [[UIView alloc ]init];
        containerView.translatesAutoresizingMaskIntoConstraints = NO;
        containerView.backgroundColor = [UIColor clearColor];
        [self addSubview:containerView];
        NSArray *containerView_H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[containerView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(containerView)];
         NSArray *containerView_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(containerView)];
        [self addConstraints:containerView_H];
        [self addConstraints:containerView_V];
        
        
        [self test];
    
        
        
    }
    - (void)test
    {
        leftView = [[UIView alloc]init];
        leftView.translatesAutoresizingMaskIntoConstraints = NO;
        leftView.backgroundColor = [UIColor yellowColor];
        [containerView addSubview:leftView];
        NSArray *leftView_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[leftView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(leftView)];
        [containerView addConstraints:leftView_V];
        
        
        
        middleView = [[UIView alloc]init];
        middleView.translatesAutoresizingMaskIntoConstraints = NO;
        middleView.backgroundColor = [UIColor redColor];
        [containerView addSubview:middleView];
        NSArray *middleView_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[middleView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(middleView)];
        [containerView addConstraints:middleView_V];
        
        
        rightView = [[UIView alloc]init];
        rightView.translatesAutoresizingMaskIntoConstraints = NO;
        rightView.backgroundColor = [UIColor blueColor];
        [containerView addSubview:rightView];
        NSArray *rightView_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[rightView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(rightView)];
        [containerView addConstraints:rightView_V];
        NSDictionary *dic_paddingConstraint = @{
                                                @"padding":@(kPadding)
                                                
                                                };
        NSArray *allView_H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[leftView]-padding-[middleView(leftView)]-padding-[rightView(middleView)]-0-|" options:0 metrics:dic_paddingConstraint views:NSDictionaryOfVariableBindings(leftView,middleView,rightView)];
        [containerView addConstraints:allView_H];
        
    
    }
    - (void)showInView:(UIView *)baseView
    {
        NSDictionary *dic_selfConstraint = @{
                                         @"height":@(kContainerViewSize.height),
                                         @"width":@(kContainerViewSize.width)
                                         
                                         };
        self.translatesAutoresizingMaskIntoConstraints = NO;
        [baseView addSubview:self];
        
        NSLayoutConstraint *self_CenterX = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:baseView attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
        NSLayoutConstraint *self_CenterY = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:baseView attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
        
        NSArray *self_H = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[self(width)]" options:0 metrics:dic_selfConstraint views:NSDictionaryOfVariableBindings(self)];
        NSArray *self_V = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[self(height)]" options:0 metrics:dic_selfConstraint views:NSDictionaryOfVariableBindings(self)];
        
        [baseView addConstraints:@[self_CenterX,self_CenterY]];
        [baseView addConstraints:self_H];
        [baseView addConstraints:self_V];
        
        
    }
    - (void)setProgressValue:(CGFloat)progressValue
    {
        _progressValue = progressValue;
        
        [self addAnimation:containerView.layer progressValue:_progressValue];
       
    }
    - (void)addAnimation:(CALayer *)layer progressValue:(CGFloat)value
    {
        CABasicAnimation *leftAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
        leftAnimation.fromValue =@0;
        leftAnimation.toValue = @(value*kContainerViewSize.height);
        leftAnimation.repeatCount = MAXFLOAT;
        leftAnimation.duration = 0.5f;
        
        [layer addAnimation:leftAnimation forKey:@"test"];
    }
    
    @end
    
    
    //
    //  ViewController.m
    //  CurveProgressDemo
    //
    //  Created by MJ on 15/6/12.
    //  Copyright (c) 2015年 SNWFMJ. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "TJProgressView.h"
    @interface ViewController ()
    {
        TJProgressView *progressView;
    }
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        progressView = [[TJProgressView alloc]init];
        [progressView showInView:self.view];
       
        [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeValue) userInfo:nil repeats:YES];
        
        
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
       
    }
    - (void)changeValue
    {
        progressView.progressValue =0.5;
    }
    @end

  • 相关阅读:
    Out of hay
    P3028 [USACO10OCT]汽水机Soda Machine
    P3619 魔法
    P2847 [USACO16DEC]Moocast(gold)奶牛广播-金
    P2830 写程序
    c#DateTime与unix时间戳互相转换
    C# UdpClient使用
    udp单播,广播,多播实现(ReceiveFromAsync,SendToAsync)
    udp广播,单播,多播
    C#实现异步阻塞TCP(Send,Receive,Accept,Connect)
  • 原文地址:https://www.cnblogs.com/thbbsky/p/4572068.html
Copyright © 2020-2023  润新知