贼溜的动画效果

93 阅读1分钟
#import "ViewController.h"

#define kCornerPoint             140 //CGFloat 宏定义

@interface ViewController ()

@property (nonatomic,strong) UIImageView *imageView;
@property (nonatomic,strong) UISlider *slider;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.view addSubview:self.imageView];
    [self.view addSubview:self.slider];
}

///创建UIImageView
- (UIImageView *)imageView {
    if (!_imageView) {
        _imageView = [[UIImageView alloc] init];
        _imageView.frame = CGRectMake(100, 100, 30, 30);
        _imageView.contentMode = UIViewContentModeScaleAspectFit;
        _imageView.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.6];
    }
    return _imageView;
}

///创建UISlider
- (UISlider *)slider {
    if (!_slider) {
        _slider = [[UISlider alloc] init];
        _slider.frame = CGRectMake(50, 360, [UIScreen mainScreen].bounds.size.width - 100, 20);
        // 最小 最大 值
        _slider.minimumValue = 0.0f;
        _slider.maximumValue = 100.0f;
        // 当前值
        _slider.value = 0.0f;
        // 连续
        _slider.continuous = YES;
        // valueImage
        _slider.minimumValueImage = [UIImage imageNamed:@"min_value"];
        _slider.maximumValueImage = [UIImage imageNamed:@"max_value"];
        // 颜色
        _slider.minimumTrackTintColor = [UIColor purpleColor];
        _slider.maximumTrackTintColor = [UIColor redColor];
        _slider.thumbTintColor = [UIColor blueColor];
        [_slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
    }
    return _slider;
}


- (void)sliderValueChanged:(id)sender {
    if ([sender isKindOfClass:[UISlider class]]) {
        UISlider * slider = sender;
        CGFloat value = slider.value/100.0f;
        NSLog(@"%f", value);
        
        if (value*200 < kCornerPoint) {
            self.imageView.frame = CGRectMake(100, 100, 30+200*value, 30);
        }else {
            self.imageView.frame = CGRectMake(100, 100+value*200-kCornerPoint, 30+kCornerPoint, 30);
        }
        
    }
}

@end