首页 > 代码库 > 旋转动画用控件RotateView
旋转动画用控件RotateView
旋转动画用控件RotateView
最终效果:
源码:
RotateView.h 与 RotateView.m
//// RotateView.h// RotateAnimationView//// Created by YouXianMing on 14/12/8.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import <UIKit/UIKit.h>/** * 要注意normalInputView与disableInputView的frame值最好与RotateView的bounds值一致 */@interface RotateView : UIView/** * 显示常规的view */@property (nonatomic, strong) UIView *normalInputView;/** * 禁用状态的view */@property (nonatomic, strong) UIView *disableInputView;/** * 旋转时间 */@property (nonatomic, assign) CGFloat rotateDuration;/** * view切换时间 */@property (nonatomic, assign) CGFloat fadeDuration;/** * 旋转到向上的位置(默认的位置) * * @param animated 是否显示动画 */- (void)changeToUpAnimated:(BOOL)animated;/** * 旋转到向左的位置 * * @param animated 是否显示动画 */- (void)changeToLeftAnimated:(BOOL)animated;/** * 旋转到向右的位置 * * @param animated 是否显示动画 */- (void)changeToRightAnimated:(BOOL)animated;/** * 旋转到向下的位置 * * @param animated 是否显示动画 */- (void)changeTodownAnimated:(BOOL)animated;/** * 渐变到显示常规的view * * @param animated 是否显示动画 */- (void)fadeToNormalInputViewAnimated:(BOOL)animated;/** * 渐变到禁用状态的view * * @param animated 是否显示动画 */- (void)fadeToDisableInputViewAnimated:(BOOL)animated;@end
//// RotateView.m// RotateAnimationView//// Created by YouXianMing on 14/12/8.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "RotateView.h"static CGFloat defaultDuration = 0.25f;typedef enum : NSUInteger { UIVIEW_normalInputView = 0xEEFF, UIVIEW_disableInputView,} EnumRotateView;@interface RotateView ()@property (nonatomic, assign) CGAffineTransform defaultTransform;@end@implementation RotateView- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { _defaultTransform = self.transform; } return self;}#pragma mark - 动画的执行- (void)changeToUpAnimated:(BOOL)animated { if (animated) { [UIView animateWithDuration:(_rotateDuration > 0 ? _rotateDuration : defaultDuration) animations:^{ self.transform = _defaultTransform; }]; } else { self.transform = _defaultTransform; }}- (void)changeToLeftAnimated:(BOOL)animated { if (animated) { [UIView animateWithDuration:(_rotateDuration > 0 ? _rotateDuration : defaultDuration) animations:^{ self.transform = CGAffineTransformRotate(_defaultTransform, -M_PI_2); }]; } else { self.transform = CGAffineTransformRotate(_defaultTransform, -M_PI_2); }}- (void)changeToRightAnimated:(BOOL)animated { if (animated) { [UIView animateWithDuration:(_rotateDuration > 0 ? _rotateDuration : defaultDuration) animations:^{ self.transform = CGAffineTransformRotate(_defaultTransform, M_PI_2); }]; } else { self.transform = CGAffineTransformRotate(_defaultTransform, M_PI_2); }}- (void)changeTodownAnimated:(BOOL)animated { if (animated) { [UIView animateWithDuration:(_rotateDuration > 0 ? _rotateDuration : defaultDuration) animations:^{ self.transform = CGAffineTransformRotate(_defaultTransform, M_PI); }]; } else { self.transform = CGAffineTransformRotate(_defaultTransform, M_PI); }}- (void)fadeToNormalInputViewAnimated:(BOOL)animated { if (animated) { [UIView animateWithDuration:(_fadeDuration > 0 ? _fadeDuration : defaultDuration) animations:^{ [self viewWithTag:UIVIEW_normalInputView].alpha = 1.f; }]; } else { [self viewWithTag:UIVIEW_normalInputView].alpha = 1.f; }}- (void)fadeToDisableInputViewAnimated:(BOOL)animated { if (animated) { [UIView animateWithDuration:(_fadeDuration > 0 ? _fadeDuration : defaultDuration) animations:^{ [self viewWithTag:UIVIEW_normalInputView].alpha = 0.f; }]; } else { [self viewWithTag:UIVIEW_normalInputView].alpha = 0.f; }}#pragma mark - 重写setter,getter方法@synthesize normalInputView = _normalInputView;- (void)setNormalInputView:(UIView *)normalInputView { normalInputView.frame = normalInputView.bounds; normalInputView.userInteractionEnabled = NO; normalInputView.tag = UIVIEW_normalInputView; [self addSubview:normalInputView]; [self bringSubviewToFront:normalInputView];}- (UIView *)normalInputView { return [self viewWithTag:UIVIEW_normalInputView];}@synthesize disableInputView = _disableInputView;- (void)setDisableInputView:(UIView *)disableInputView { disableInputView.frame = disableInputView.bounds; disableInputView.userInteractionEnabled = NO; disableInputView.tag = UIVIEW_disableInputView; [self addSubview:disableInputView]; [self sendSubviewToBack:disableInputView];}- (UIView *)disableInputView { return [self viewWithTag:UIVIEW_disableInputView];}@end
使用的源码:
//// ViewController.m// CircleView//// Created by YouXianMing on 14/12/9.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "RotateView.h"@interface ViewController ()@property (nonatomic, strong) RotateView *rotateView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 输入图片与输出图片 UIImageView *normalView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"normal"]]; UIImageView *disableView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"disable"]]; // 旋转的view _rotateView = [[RotateView alloc] initWithFrame:normalView.bounds]; _rotateView.center = self.view.center; _rotateView.normalInputView = normalView; _rotateView.disableInputView = disableView; [self.view addSubview:_rotateView]; // 延时 [self performSelector:@selector(excuteEventOne) withObject:nil afterDelay:7.f]; // 延时 [self performSelector:@selector(excuteEventTwo) withObject:nil afterDelay:9.f];}- (void)excuteEventOne { [_rotateView changeTodownAnimated:YES]; [_rotateView fadeToDisableInputViewAnimated:YES];}- (void)excuteEventTwo { [_rotateView changeToUpAnimated:YES]; [_rotateView fadeToNormalInputViewAnimated:YES];}@end
较为核心的地方:
旋转动画用控件RotateView
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。