// // TPShareContentControlelr.m // ThePaperHD // // Created by scar1900 on 15/2/12. // Copyright (c) 2015年 scar1900. All rights reserved. // #import "TPShareContentControlelr.h" #import "shareButton.h" #define ShareBtnTag 1000 @interface TPShareContentControlelr () { CGFloat angle; CGFloat FourAngle; BOOL isExpand; } @property(nonatomic, strong)NSMutableArray *shareBtnList; @property(nonatomic, strong)UIImageView *ShareBtnImage; @end @implementation TPShareContentControlelr @synthesize shareBtnList; @synthesize startPoint; @synthesize direction; @synthesize delegate; @synthesize contentBO; @synthesize shareImage; @synthesize hasImage; @synthesize sharestyle; - (id)init { self = [super init]; if (self) { self.hasImage = YES; }return self; } - (void)viewDidLoad { [super viewDidLoad]; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if (orientation == UIInterfaceOrientationLandscapeRight || orientation ==UIInterfaceOrientationLandscapeLeft) { self.view.frame = CGRectMake(0, 0, 1024, 768); }else self.view.frame = CGRectMake(0, 0, 768, 1024); [self.view setBackgroundColor:[UIColor clearColor]]; angle = M_PI/14; FourAngle = M_PI/9; isExpand = NO; // Do any additional setup after loading the view. [self addShareBtnToList]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapBackView:)]; tap.cancelsTouchesInView = YES; [self.view addGestureRecognizer:tap]; UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeHandler:)]; swipe.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown; [self.view addGestureRecognizer:swipe]; if (self.hasImage) { if (self.shareImage) { self.ShareBtnImage.frame = CGRectMake(startPoint.x, startPoint.y,30, 30); self.ShareBtnImage.image = self.shareImage; }else { self.ShareBtnImage.frame = CGRectMake(startPoint.x+72/2-111/4, startPoint.y+72/2-111/4, 111/2, 111/2); //【需求】视觉优化(bug:4569) self.ShareBtnImage.image = Image(@"detailPage/shareBtn.png"); } }else { self.ShareBtnImage.image = nil; } [self.view addSubview:self.ShareBtnImage]; } - (UIImageView*)ShareBtnImage { if (!_ShareBtnImage) { if (self.shareImage) { _ShareBtnImage = [[UIImageView alloc]initWithImage:self.shareImage]; }else { //【需求】视觉优化(bug:4569) _ShareBtnImage = [[UIImageView alloc]initWithImage:Image(@"detailPage/shareBtn.png")]; } _ShareBtnImage.backgroundColor = [UIColor clearColor]; } return _ShareBtnImage; } - (void)tapBackView:(UITapGestureRecognizer*)tap { [self dismissShareContent:^{ if ([self.delegate respondsToSelector:@selector(dismissContent)]) { [self.delegate dismissContent]; } }]; } - (void)swipeHandler:(UISwipeGestureRecognizer*)swipe { [self dismissShareContent:^{ if ([self.delegate respondsToSelector:@selector(dismissContent)]) { [self.delegate dismissContent]; } }]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self expandButtons]; } - (void)addShareBtnToList { self.shareBtnList = [NSMutableArray arrayWithCapacity:12]; for (int i=0;i<12;i++) { shareButton *button = [[shareButton alloc]initWithFrame:CGRectMake(self.startPoint.x, self.startPoint.y, 98/2, 96/2)]; button.tag = ShareBtnTag + i; button.hidden = YES; switch (i) { case 0: [button setImage:Image(@"login/shareWeibo.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareWeibo.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(sinaShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 1: [button setImage:Image(@"login/shareQQ.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareQQ.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(qqShare:) forControlEvents:UIControlEventTouchUpInside]; if (![shareUtil isHaveQQClient]) { button.enabled = NO; }else { button.enabled = YES; } break; case 2: [button setImage:Image(@"login/shareWeChat.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareWeChat.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(weChatShare:) forControlEvents:UIControlEventTouchUpInside]; if (![shareUtil isHaveWeChatClient]) { button.enabled = NO; }else { button.enabled = YES; } break; case 3: [button setImage:Image(@"login/sharePengyou.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/sharePengyou.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(friendGroupShare:) forControlEvents:UIControlEventTouchUpInside]; if (![shareUtil isHaveWeChatClient]) { button.enabled = NO; }else { button.enabled = YES; } break; case 4: // [button setImage:Image(@"login/shareRenren.png") forState:UIControlStateNormal]; // [button setImage:Image(@"login/shareRenren.png") forState:UIControlStateHighlighted]; [button setImage:Image(@"login/shareDouban.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareDouban.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(doubanShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 5: [button setImage:Image(@"login/shareTencent.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareTencent.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(tencentShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 6: [button setImage:Image(@"login/sharePocket.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/sharePocket.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(pocketShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 7: [button setImage:Image(@"login/shareQQZone.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareQQZone.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(qzoneShare:) forControlEvents:UIControlEventTouchUpInside]; if (![shareUtil isHaveQQClient]) { button.enabled = NO; }else { button.enabled = YES; } break; case 8: [button setImage:Image(@"login/shareEvernote.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareEvernote.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(evernoteShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 9: [button setImage:Image(@"login/shareYouDao.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareYouDao.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(youdaoShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 10: [button setImage:Image(@"login/shareSys.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareSys.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(systemShare:) forControlEvents:UIControlEventTouchUpInside]; break; case 11: [button setImage:Image(@"login/shareCopy.png") forState:UIControlStateNormal]; [button setImage:Image(@"login/shareCopy.png") forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(copyShare:) forControlEvents:UIControlEventTouchUpInside]; break; default: break; } [self.shareBtnList addObject:button]; [self.view addSubview:button]; } [self.view bringSubviewToFront:self.ShareBtnImage]; } #pragma mark - set and get method - (void)statusBarOrientationChange:(NSNotification *)notification{ if (!isExpand) { return; } UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if (orientation == UIInterfaceOrientationLandscapeRight || orientation ==UIInterfaceOrientationLandscapeLeft) { self.view.frame = CGRectMake(0, 0, 1024, 768); }else self.view.frame = CGRectMake(0, 0, 768, 1024); [self.shareBtnList enumerateObjectsUsingBlock:^(UIButton *btn, NSUInteger idx, BOOL *stop) { btn.hidden = NO; CGFloat absoluteX = 0; CGFloat absoluteY = 0; CGFloat absoluteXdamp = 0; CGFloat absoluteYdamp = 0; if (idx < 4) { absoluteX = sinf(FourAngle*(idx+1))*160; absoluteY = cosf(FourAngle*(idx+1))*160; absoluteXdamp = sinf(FourAngle*(idx+1))*165; absoluteYdamp = cosf(FourAngle*(idx+1))*165; }else { absoluteX = sinf(angle*(idx-4))*250; absoluteY = cosf(angle*(idx-4))*250; absoluteXdamp = sinf(angle*(idx-4))*255; absoluteYdamp = cosf(angle*(idx-4))*255; } if (self.direction == expandRight) { btn.frame = CGRectMake(startPoint.x + absoluteX, startPoint.y - absoluteY, btn.frame.size.width, btn.frame.size.height); }else if (self.direction == expandLeft) { btn.frame = CGRectMake(startPoint.x - absoluteX, startPoint.y - absoluteY, btn.frame.size.width, btn.frame.size.height); }else { btn.frame = CGRectMake(startPoint.x - absoluteX, startPoint.y + absoluteY, btn.frame.size.width, btn.frame.size.height); } }]; if (self.hasImage) { if (self.shareImage) { self.ShareBtnImage.frame = CGRectMake(startPoint.x, startPoint.y, 30, 30); self.ShareBtnImage.image = self.shareImage; }else { self.ShareBtnImage.frame = CGRectMake(startPoint.x+72/2-111/4, startPoint.y+72/2-111/4, 111/2, 111/2); self.ShareBtnImage.image = Image(@"detailPage/shareBtn.png"); } }else { self.ShareBtnImage.image = nil; } } - (void)layoutAfterOrientationChange { [self statusBarOrientationChange:nil]; } - (void)expandButtons { [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; [self.shareBtnList enumerateObjectsUsingBlock:^(UIButton *btn, NSUInteger idx, BOOL *stop) { CGFloat absoluteX = 0; CGFloat absoluteY = 0; CGFloat absoluteXdamp = 0; CGFloat absoluteYdamp = 0; if (idx < 4) { absoluteX = sinf(FourAngle*(idx+1))*160; absoluteY = cosf(FourAngle*(idx+1))*160; absoluteXdamp = sinf(FourAngle*(idx+1))*165; absoluteYdamp = cosf(FourAngle*(idx+1))*165; }else { absoluteX = sinf(angle*(idx-4))*250; absoluteY = cosf(angle*(idx-4))*250; absoluteXdamp = sinf(angle*(idx-4))*255; absoluteYdamp = cosf(angle*(idx-4))*255; } [UIView animateWithDuration:0.05 delay:0.05*idx options:UIViewAnimationOptionTransitionNone animations:^{ btn.hidden = NO; if (self.direction == expandRight) { btn.frame = CGRectMake(startPoint.x + absoluteXdamp, startPoint.y - absoluteYdamp, btn.frame.size.width, btn.frame.size.height); }else if (self.direction == expandLeft){ btn.frame = CGRectMake(startPoint.x - absoluteXdamp, startPoint.y - absoluteYdamp, btn.frame.size.width, btn.frame.size.height); }else { btn.frame = CGRectMake(startPoint.x - absoluteXdamp, startPoint.y + absoluteYdamp, btn.frame.size.width, btn.frame.size.height); } } completion:^(BOOL finished) { [UIView animateWithDuration:0.05 animations:^{ if (self.direction == expandRight) { btn.frame = CGRectMake(startPoint.x + absoluteX, startPoint.y - absoluteY, btn.frame.size.width, btn.frame.size.height); }else if (self.direction == expandLeft){ btn.frame = CGRectMake(startPoint.x - absoluteX, startPoint.y - absoluteY, btn.frame.size.width, btn.frame.size.height); }else { btn.frame = CGRectMake(startPoint.x - absoluteX, startPoint.y + absoluteY, btn.frame.size.width, btn.frame.size.height); } } completion:^(BOOL finished) { if (idx == 11) { [[UIApplication sharedApplication] endIgnoringInteractionEvents]; isExpand = YES; } }]; }]; }]; } - (void)closeButtons:(void (^)(void))completion { [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; [self.shareBtnList enumerateObjectsUsingBlock:^(UIButton *btn, NSUInteger idx, BOOL *stop) { [UIView animateWithDuration:0.05 delay:0.05*idx options:UIViewAnimationOptionTransitionNone animations:^{ btn.frame = CGRectMake(startPoint.x, startPoint.y, btn.frame.size.width, btn.frame.size.height); } completion:^(BOOL finished) { btn.hidden = YES; if (idx == 11) { [[UIApplication sharedApplication] endIgnoringInteractionEvents]; isExpand = NO; if (completion) { completion(); } } }]; }]; } - (void)dismissShareContent:(void (^)(void))completion { [self closeButtons:^{ if (completion) { completion(); } }]; } #pragma mark - share event - (void)weChatShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:weChatSessionShareType shareStyle:self.sharestyle completion:nil]; } - (void)friendGroupShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:weChatTimeLineShareType shareStyle:self.sharestyle completion:nil]; } - (void)sinaShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:nil shareType:sinaWeiBoShareType shareStyle:self.sharestyle completion:nil]; } - (void)pocketShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:nil shareType:pocketShareType shareStyle:self.sharestyle completion:nil]; } - (void)qzoneShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:QQZoneShareType shareStyle:self.sharestyle completion:nil]; } - (void)qqShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:QQFriendShareType shareStyle:self.sharestyle completion:nil]; } - (void)tencentShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:TencentWeboShareType shareStyle:self.sharestyle completion:nil]; } - (void)evernoteShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:evernoteShareType shareStyle:self.sharestyle completion:nil]; } - (void)youdaoShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:youdaoShareType shareStyle:self.sharestyle completion:nil]; } - (void)doubanShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:doubanShareType shareStyle:self.sharestyle completion:nil]; } - (void)renrenShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:renrenShareType shareStyle:self.sharestyle completion:nil]; } - (void)emailShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:emailShareType shareStyle:self.sharestyle completion:nil]; } - (void)copyShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:copyType shareStyle:self.sharestyle completion:nil]; } - (void)systemShare:(UIButton*)btn { if (![Remote IsEableNetwork]) { ShowTextMessage(noNetworkMessage); return; } [shareUtil instance].baseSharedController = self; [shareUtil instance].systemShareSourceRect = btn.frame; [shareUtil shareNews:self.contentBO.shareUrl imageUrl:self.contentBO.sharePic title:self.contentBO.name summary:self.contentBO.summary shareType:systemShareType shareStyle:self.sharestyle completion:nil]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end