|
//
// 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
|