Initial commit
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
//
|
||||
// LXShareImageVIew.h
|
||||
// shreImgAnimition
|
||||
//
|
||||
// Created by imac on 16/9/5.
|
||||
// Copyright © 2016年 xiang. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
@protocol LXShareImageVIewDelegate <NSObject>
|
||||
|
||||
- (void)didSelectButWithBtnTag:(NSInteger)btnTag;
|
||||
|
||||
@end
|
||||
|
||||
@interface LXShareImageVIew : UIView
|
||||
|
||||
@property (nonatomic, retain) UIView *primaryView;
|
||||
|
||||
@property float spinTime;
|
||||
|
||||
@property (nonatomic ,retain) UIScrollView *scrollView;
|
||||
|
||||
@property (nonatomic ,strong) NSArray *titles;
|
||||
|
||||
@property (nonatomic,strong) NSArray *imges;
|
||||
|
||||
@property (nonatomic, strong) UIControl *blackOverBack;
|
||||
|
||||
//@property (nonatomic,strong) UIImageView *img;
|
||||
|
||||
@property (nonatomic ,strong) NSMutableArray *imgsArr;
|
||||
|
||||
@property (nonatomic ,strong) NSMutableArray *animationFraArr;
|
||||
|
||||
|
||||
@property (nonatomic,weak)id<LXShareImageVIewDelegate> delegate;
|
||||
|
||||
- (void)shareShow;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,289 @@
|
||||
//
|
||||
// LXShareImageVIew.m
|
||||
// shreImgAnimition
|
||||
//
|
||||
// Created by imac on 16/9/5.
|
||||
// Copyright © 2016年 xiang. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LXShareImageVIew.h"
|
||||
#define SHAREVIEW_HEIGHT 160
|
||||
#define COLOR_MIAN [UIColor colorWithRed:65.0/256.0 green:65.0/256.0 blue:65.0/256.0 alpha:1]
|
||||
#define kScreenSize [UIScreen mainScreen].bounds.size
|
||||
@interface LXShareImageVIew (){
|
||||
//bool displayingPrimary;
|
||||
NSTimer *timer;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation LXShareImageVIew
|
||||
|
||||
@synthesize primaryView=_primaryView, scrollView=_scrollView ,spinTime;
|
||||
|
||||
|
||||
-(id)initWithFrame:(CGRect)frame{
|
||||
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
// Initialization code
|
||||
[self setData];
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
//self.alpha = 0.4;
|
||||
spinTime = 1.0;
|
||||
|
||||
[self setUp];
|
||||
|
||||
}
|
||||
return self;
|
||||
|
||||
|
||||
}
|
||||
|
||||
-(void)setData{
|
||||
|
||||
self.titles = @[@"微信",@"朋友圈",@"QQ",@"微博"];
|
||||
self.imges = @[@"ifish_sharewechat",@"ifish_sharecircle",@"ifish_shareqq",@"ifish_shareblog"];
|
||||
|
||||
}
|
||||
|
||||
|
||||
//- (void) setPrimaryView:(UIView *)primaryView{
|
||||
//
|
||||
// _primaryView = primaryView;
|
||||
//
|
||||
// CGRect frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
|
||||
// [self.primaryView setFrame: frame];
|
||||
//
|
||||
// [self roundView: self.primaryView];
|
||||
// self.primaryView.userInteractionEnabled = YES;
|
||||
// UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(flipTouched:)];
|
||||
// gesture.numberOfTapsRequired = 1;
|
||||
// [self.primaryView addGestureRecognizer:gesture];
|
||||
//
|
||||
//}
|
||||
|
||||
- (void) roundView: (UIView *) view{
|
||||
[view.layer setCornerRadius: (self.frame.size.height/2)];
|
||||
[view.layer setMasksToBounds:YES];
|
||||
}
|
||||
|
||||
-(void)flipTouched:(id)sender
|
||||
{
|
||||
// [UIView transitionWithView:self.primaryView duration:spinTime options:UIViewAnimationOptionTransitionFlipFromLeft+UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
//
|
||||
//
|
||||
// } completion:^(BOOL finished) {
|
||||
//
|
||||
//
|
||||
// }];
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
-(void)setUp{
|
||||
|
||||
if (!self.blackOverBack) {
|
||||
self.blackOverBack = [[UIControl alloc] init];
|
||||
self.blackOverBack.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
|
||||
}
|
||||
self.blackOverBack.frame = self.bounds;
|
||||
|
||||
|
||||
UIColor *maskColor = [UIColor colorWithWhite:0.0 alpha:0.2];
|
||||
|
||||
self.blackOverBack.backgroundColor = maskColor;
|
||||
|
||||
|
||||
[self addSubview:self.blackOverBack];
|
||||
[self.blackOverBack addTarget:self action:@selector(dissmissView) forControlEvents:UIControlEventTouchUpInside];
|
||||
|
||||
CGFloat spaceW = 20;
|
||||
CGFloat itemW= (kScreenSize.width - spaceW *5)/4;
|
||||
self.scrollView =[[UIScrollView alloc] init];
|
||||
|
||||
CGFloat scrollH= 60 + itemW +spaceW;
|
||||
|
||||
CGRect frame = CGRectMake(0,kScreenSize.height -scrollH, self.frame.size.width,scrollH);
|
||||
[self.scrollView setFrame:frame];
|
||||
self.scrollView.backgroundColor = COLOR_MIAN;
|
||||
self.scrollView.alpha = 1;
|
||||
|
||||
self.scrollView.showsVerticalScrollIndicator = NO;
|
||||
self.scrollView.showsHorizontalScrollIndicator = NO;
|
||||
self.scrollView.contentSize = CGSizeMake((spaceW + itemW) *self.titles.count , 160);
|
||||
[self.blackOverBack addSubview:self.scrollView];
|
||||
self.imgsArr = [[NSMutableArray alloc] init];
|
||||
for (NSInteger i =0; i <=3; i++ ) {
|
||||
|
||||
UIButton *imgbtn =[UIButton buttonWithType:UIButtonTypeCustom];
|
||||
imgbtn.frame = CGRectMake(spaceW*(i+1) + itemW*i, 20, itemW, itemW);
|
||||
|
||||
|
||||
|
||||
[imgbtn addTarget:self action:@selector(sharebtnClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[imgbtn setImage:[UIImage imageNamed:self.imges[i]] forState:UIControlStateNormal];
|
||||
imgbtn.tag = i;
|
||||
|
||||
[self.scrollView addSubview:imgbtn];
|
||||
[self.imgsArr addObject:imgbtn];
|
||||
|
||||
|
||||
UILabel *title=[[UILabel alloc] initWithFrame:CGRectMake(spaceW*(i+1) + itemW*i, 20 + itemW +20 , itemW, 20)];
|
||||
|
||||
title.text = self.titles[i];
|
||||
|
||||
title.textAlignment = NSTextAlignmentCenter;
|
||||
title.textColor = [UIColor whiteColor];
|
||||
[self.scrollView addSubview:title];
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
-(void)shareShow{
|
||||
|
||||
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
|
||||
[UIView animateWithDuration:0.38 animations:^{
|
||||
[keyWindow addSubview:self];
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
-(void)layoutSubviews{
|
||||
|
||||
|
||||
timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(showAnima) userInfo:nil repeats:NO];
|
||||
|
||||
}
|
||||
-(void)showAnima{
|
||||
|
||||
|
||||
|
||||
[self.imgsArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
UIButton*btn=(UIButton *)obj;
|
||||
CGRect animationFrame = CGRectMake(btn.frame.origin.x, btn.frame.origin.y +10, btn.frame.size.width, btn.frame.size.height);
|
||||
|
||||
[UIView animateWithDuration:1.0 delay:1.0 usingSpringWithDamping:0.2 initialSpringVelocity:0 options:
|
||||
UIViewAnimationOptionAllowUserInteraction animations:^{
|
||||
btn.frame = animationFrame;
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
|
||||
|
||||
}];
|
||||
|
||||
if (stop) {
|
||||
|
||||
[self TransitionFlipanimations];
|
||||
}
|
||||
|
||||
|
||||
}];
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
-(void)TransitionFlipanimations{
|
||||
|
||||
[self.imgsArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
|
||||
|
||||
if (idx ==0) {
|
||||
|
||||
[UIView transitionWithView:obj duration:0.7 options:UIViewAnimationOptionTransitionFlipFromLeft+UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
|
||||
|
||||
}];
|
||||
NSLog(@"......0");
|
||||
|
||||
}else if (idx ==1){
|
||||
[UIView transitionWithView:obj duration:0.8 options:UIViewAnimationOptionTransitionFlipFromLeft +UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
|
||||
|
||||
}];
|
||||
NSLog(@"......1");
|
||||
|
||||
}else if (idx ==2){
|
||||
[UIView transitionWithView:obj duration:0.9 options:UIViewAnimationOptionTransitionFlipFromLeft +UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
|
||||
|
||||
}];
|
||||
NSLog(@"......2");
|
||||
|
||||
}else if (idx ==3){
|
||||
[UIView transitionWithView:obj duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft +UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
|
||||
|
||||
}];
|
||||
NSLog(@"......3");
|
||||
|
||||
}
|
||||
|
||||
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
-(void)sharebtnClick:(UIButton *)btn{
|
||||
|
||||
|
||||
for (NSInteger i = 0; i<self.subviews.count; i++){
|
||||
UIView *view = self.subviews[i];
|
||||
if ([view isKindOfClass:[UIButton class]]){
|
||||
[UIView animateWithDuration:0.3 delay:0.1*i options:UIViewAnimationOptionTransitionCurlDown animations:^{
|
||||
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
[self performSelector:@selector(removeView:) withObject:btn afterDelay:0.38];
|
||||
|
||||
|
||||
}
|
||||
|
||||
-(void)dissmissView{
|
||||
|
||||
[UIView animateWithDuration:0.38 animations:^{
|
||||
|
||||
[timer invalidate];
|
||||
|
||||
[self removeFromSuperview];
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)removeView:(UIButton *)sender{
|
||||
|
||||
[UIView animateWithDuration:0.38 animations:^{
|
||||
|
||||
[timer invalidate];
|
||||
[self removeFromSuperview];
|
||||
}];
|
||||
|
||||
[self.delegate didSelectButWithBtnTag:sender.tag];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user