UILabel的缩放动画效果
效果图
源码
https://github.com/YouXianMing/Animations
//
// ScaleLabel.h
// Animations
//
// Created by YouXianMing on 15/12/17.
// Copyright © 2015年 YouXianMing. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ScaleLabel : UIView
/**
* Label's text.
*/
@property (nonatomic, strong) NSString *text;
/**
* Label's color.
*/
@property (nonatomic, strong) UIFont *font;
/**
* The Label's scale before the animation start.
*/
@property (nonatomic, assign) CGFloat startScale;
/**
* The label's scale after the animation ended.
*/
@property (nonatomic, assign) CGFloat endScale;
/**
* The show label's color.
*/
@property (nonatomic, strong) UIColor *backedLabelColor;
/**
* The animated label's color.
*/
@property (nonatomic, strong) UIColor *colorLabelColor;
/**
* Start animation.
*/
- (void)startAnimation;
@end
//
// ScaleLabel.m
// Animations
//
// Created by YouXianMing on 15/12/17.
// Copyright © 2015年 YouXianMing. All rights reserved.
//
#import "ScaleLabel.h"
@interface ScaleLabel ()
@property (nonatomic, strong) UILabel *backedLabel;
@property (nonatomic, strong) UILabel *colorLabel;
@end
@implementation ScaleLabel
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
_backedLabel = [[UILabel alloc] initWithFrame:self.bounds];
_colorLabel = [[UILabel alloc] initWithFrame:self.bounds];
_backedLabel.alpha = 0;
_colorLabel.alpha = 0;
_backedLabel.textAlignment = NSTextAlignmentCenter;
_colorLabel.textAlignment = NSTextAlignmentCenter;
[self addSubview:_backedLabel];
[self addSubview:_colorLabel];
}
return self;
}
- (void)startAnimation {
if (_endScale == 0) {
_endScale = 2.f;
}
[UIView animateWithDuration:1 delay:0 usingSpringWithDamping:7 initialSpringVelocity:4 options:UIViewAnimationOptionCurveEaseInOut
animations:^{
_backedLabel.alpha = 1.f;
_backedLabel.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);
_colorLabel.alpha = 1.f;
_colorLabel.transform = CGAffineTransformMake(1, 0, 0, 1, 0, 0);;
} completion:^(BOOL finished) {
[UIView animateWithDuration:2 delay:0.5 usingSpringWithDamping:7 initialSpringVelocity:4
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
_colorLabel.alpha = 0.f;
_colorLabel.transform = CGAffineTransformMake(_endScale, 0, 0, _endScale, 0, 0);
} completion:nil];
}];
}
#pragma mark - Overwrite getter & setter methods.
@synthesize text = _text;
- (void)setText:(NSString *)text {
_text = text;
_backedLabel.text = text;
_colorLabel.text = text;
}
- (NSString *)text {
return _text;
}
@synthesize startScale = _startScale;
- (void)setStartScale:(CGFloat)startScale {
_startScale = startScale;
_backedLabel.transform = CGAffineTransformMake(startScale, 0, 0, startScale, 0, 0);
_colorLabel.transform = CGAffineTransformMake(startScale, 0, 0, startScale, 0, 0);
}
- (CGFloat)startScale {
return _startScale;
}
@synthesize font = _font;
- (void)setFont:(UIFont *)font {
_font = font;
_backedLabel.font = font;
_colorLabel.font = font;
}
- (UIFont *)font {
return _font;
}
@synthesize backedLabelColor = _backedLabelColor;
- (void)setBackedLabelColor:(UIColor *)backedLabelColor {
_backedLabelColor = backedLabelColor;
_backedLabel.textColor = backedLabelColor;
}
@synthesize colorLabelColor = _colorLabelColor;
- (void)setColorLabelColor:(UIColor *)colorLabelColor {
_colorLabelColor = colorLabelColor;
_colorLabel.textColor = colorLabelColor;
}
@end
细节