通讯录之一Transform动画

来源:互联网 发布:软件 复制 绿色化 编辑:程序博客网 时间:2024/05/29 16:05

这里写图片描述

主要使用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
0 0