主要使用tramsform对控件做平移和缩放,只要计算好坐标位置即可
动画类
GLoginAnimationView.h
//
// GLoginAnimationView.h
// 通讯录
//
// Created by gaocai on 16/7/19.
// Copyright © 2016年 gaocai. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface GLoginAnimationView : UIView
/**
* 获取对象静态方法
*
* @return GLoginAnimationView
*/
+ (instancetype)loadAnimationView;
/**
* 通过BOOL值去判断是遮眼动画还是不遮眼动画
*
* @param isClose YES 为遮眼 NO为不遮眼
*/
- (void)startAnim:(BOOL)isClose;
@end
GLoginAnimationView.m
//
// GLoginAnimationView.m
// 通讯录
//
// Created by gaocai on 16/7/19.
// Copyright © 2016年 gaocai. All rights reserved.
//
#import "GLoginAnimationView.h"
@interface GLoginAnimationView ()
@property (weak, nonatomic) IBOutlet UIImageView *leftArm;
@property (weak, nonatomic) IBOutlet UIImageView *rightArm;
@property (weak, nonatomic) IBOutlet UIImageView *leftHand;
@property (weak, nonatomic) IBOutlet UIImageView *rightHand;
@property (weak, nonatomic) IBOutlet UIView *contentView;
/**
* 左右两手臂高度是一致的
*/
@property (nonatomic, assign) CGFloat armOffsetY;
/**
* 记录左边X轴的偏移量
*/
@property (nonatomic, assign) CGFloat leftArmOffsetX;
/**
* 记录右边X轴的偏移量
*/
@property (nonatomic, assign) CGFloat rightArmOffsetX;
@end
@implementation GLoginAnimationView
/**
* 做一些初始化操作
*/
- (void)awakeFromNib {
//初始化手臂位置
//y轴偏移量
_armOffsetY = self.bounds.size.height - _leftArm.frame.origin.y;
//左边手臂x轴偏移量
_leftArmOffsetX = -_leftArm.frame.origin.x;
//右手臂x轴的偏移量
_rightArmOffsetX = _contentView.bounds.size.width - _rightHand.bounds.size.width - _rightArm.frame.origin.x;
//平移左手臂
_leftArm.transform = CGAffineTransformMakeTranslation(_leftArmOffsetX, _armOffsetY);
//平移右手臂
_rightArm.transform = CGAffineTransformMakeTranslation(_rightArmOffsetX, _armOffsetY);
}
+ (instancetype)loadAnimationView {
return [[NSBundle mainBundle] loadNibNamed:@"GLoginAnimationView" owner:nil options:nil][0];
}
- (void)startAnim:(BOOL)isClose {
if (isClose) {//遮眼
//清空形变(只要控件才可以形变)
[UIView animateWithDuration:0.25 animations:^{
//手臂位置还原
_leftArm.transform = CGAffineTransformIdentity;
_rightArm.transform = CGAffineTransformIdentity;
//左手
_leftHand.transform = CGAffineTransformMakeTranslation(-_leftArmOffsetX, -_armOffsetY + 5);
_leftHand.transform = CGAffineTransformScale(_leftHand.transform, 0.01, 0.01);
//右手
_rightHand.transform = CGAffineTransformMakeTranslation(-_rightArmOffsetX, -_armOffsetY + 5);
_rightHand.transform = CGAffineTransformScale(_rightHand.transform, 0.01, 0.01);
}];
} else {
[UIView animateWithDuration:0.25 animations:^{
// 平移左手臂
_leftArm.transform = CGAffineTransformMakeTranslation(_leftArmOffsetX, _armOffsetY);
//平移右手臂
_rightArm.transform = CGAffineTransformMakeTranslation(_rightArmOffsetX, _armOffsetY);
//手位置还原
_leftHand.transform = CGAffineTransformIdentity;
_rightHand.transform = CGAffineTransformIdentity;
}];
}
}
@end