EG:基本的分享:微信缘回、微博、QQ典挑、QQZone酥宴、新浪微博
一、創(chuàng)建背景的模糊視圖您觉,以及一個(gè)頁(yè)面的6個(gè)按鈕
1拙寡、分享的視圖.h文件
@interface CoverView : UIView
///實(shí)例化一個(gè)本類的對(duì)象 并且返回去
+(instancetype)coverView;
@end
2、分享的視圖.m文件
#import "CoverView.h"
//導(dǎo)入友盟
#import "UMSocial.h"
@interface CoverView ()
//中間部分的容器視圖
@property (nonatomic,strong)UIView *containerView;
//按鈕要顯示的真實(shí)位置的數(shù)組
@property (nonatomic,strong)NSMutableArray *btnYArray;
//按鈕還沒(méi)執(zhí)行動(dòng)畫之前位置的數(shù)組
@property (nonatomic,strong)NSMutableArray *hiddenBtnYArray;
@end
@implementation CoverView
//懶加載中間部分的容器
-(UIView *)containerView{
if (!_containerView) {
_containerView=[[UIView alloc]init];
//? ? ? ? _containerView.transform = CGAffineTransformMakeRotation(M_PI_4);
_containerView.backgroundColor=[[UIColor whiteColor]colorWithAlphaComponent:0.7];
}
return _containerView;
}
//實(shí)例化本類對(duì)象方法的實(shí)現(xiàn)
+(instancetype)coverView{
CoverView * cover=[[CoverView alloc]init];
cover.backgroundColor=[[UIColor blackColor]colorWithAlphaComponent:0.5];
return cover;
}
//本類對(duì)象收拾的點(diǎn)擊方法? 執(zhí)行動(dòng)畫之后? 在移除視圖
-(void)clickCover{
//開(kāi)啟線程執(zhí)行動(dòng)畫 0.02為時(shí)間差-->既是兩個(gè)按鈕之間掉落的時(shí)間差
UIButton *btn=self.containerView.subviews[self.containerView.subviews.count-1];//通過(guò)中間部分的容器取到按鈕
CGFloat showY=[self.hiddenBtnYArray[self.hiddenBtnYArray.count-1] floatValue];//取到視圖沒(méi)顯示之前的y軸坐標(biāo)
dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.02 * NSEC_PER_SEC));
dispatch_after(time, dispatch_get_main_queue(), ^{
//執(zhí)行動(dòng)畫 并且顯示到最終的位置 及是移動(dòng)到?jīng)]執(zhí)行動(dòng)畫之前的y值--》最初是的y值
[UIView animateWithDuration:1.0 animations:^{
btn.frame=CGRectMake(btn.frame.origin.x, showY, btn.frame.size.width, btn.frame.size.height);
}];
//時(shí)間間隔之后再開(kāi)啟另外一個(gè)動(dòng)畫
UIButton *btn1=self.containerView.subviews[self.containerView.subviews.count-2];
CGFloat showY1=[self.hiddenBtnYArray[self.hiddenBtnYArray.count-2] floatValue];
dispatch_time_t time1 = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.02 * NSEC_PER_SEC));
dispatch_after(time1, dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1.0 animations:^{
btn1.frame=CGRectMake(btn1.frame.origin.x, showY1, btn1.frame.size.width, btn1.frame.size.height);
}];
UIButton *btn2=self.containerView.subviews[self.containerView.subviews.count-3];
CGFloat showY2=[self.hiddenBtnYArray[self.hiddenBtnYArray.count-3] floatValue];
dispatch_time_t time2 = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.02 * NSEC_PER_SEC));
dispatch_after(time2, dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1.0 animations:^{
btn2.frame=CGRectMake(btn2.frame.origin.x, showY2, btn2.frame.size.width, btn2.frame.size.height);
}];
UIButton *btn3=self.containerView.subviews[self.containerView.subviews.count-4];
CGFloat showY3=[self.hiddenBtnYArray[self.hiddenBtnYArray.count-4] floatValue];
dispatch_time_t time3 = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.02 * NSEC_PER_SEC));
dispatch_after(time3, dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1.0 animations:^{
btn3.frame=CGRectMake(btn3.frame.origin.x, showY3, btn3.frame.size.width, btn3.frame.size.height);
}];
UIButton *btn4=self.containerView.subviews[self.containerView.subviews.count-5];
CGFloat showY4=[self.hiddenBtnYArray[self.hiddenBtnYArray.count-5] floatValue];
dispatch_time_t time4 = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.02 * NSEC_PER_SEC));
dispatch_after(time4, dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1.0 animations:^{
btn4.frame=CGRectMake(btn4.frame.origin.x, showY4, btn4.frame.size.width, btn4.frame.size.height);
}];
//? ? ? ? ? ? ? ? ? ? ? ? UIButton *btn5=self.containerView.subviews[self.containerView.subviews.count-6];
//
//? ? ? ? ? ? ? ? ? ? ? ? CGFloat showY5=[self.hiddenBtnYArray[self.hiddenBtnYArray.count-6] floatValue];
//? ? ? ? ? ? ? ? ? ? ? ? dispatch_time_t time5 = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.02 * NSEC_PER_SEC));
//? ? ? ? ? ? ? ? ? ? ? ? dispatch_after(time5, dispatch_get_main_queue(), ^{
//
//? ? ? ? ? ? ? ? ? ? ? ? ? ? [UIView animateWithDuration:1.0 animations:^{
//
//? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? btn5.frame=CGRectMake(btn5.frame.origin.x, showY5, btn5.frame.size.width, btn5.frame.size.height);
//
//? ? ? ? ? ? ? ? ? ? ? ? ? ? }];
//
dispatch_time_t time4 = dispatch_time(DISPATCH_TIME_NOW, (NSInteger)(0.6 * NSEC_PER_SEC));
dispatch_after(time4, dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.2 animations:^{
self.alpha=0.0;
[self removeFromSuperview];
}];
});
//
//? ? ? ? ? ? ? ? ? ? ? ? });
});
});
});
});
});
}
//視圖最常用的幾個(gè)方法 awakeFromNib 加載視圖通過(guò)xib的方式時(shí)? 使用最多 initWithFrame加載視圖用純代碼的時(shí)候使用最多 兩者不能同事使用
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
//初始化視圖大小的時(shí)候? 添加收拾 并給收拾相應(yīng)的點(diǎn)擊方法
UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]init];
[tap addTarget:self action:@selector(clickCover)];
[self addGestureRecognizer:tap];
[self addSubview:self.containerView];
[self setSubviews];
}
return self;
}
//添加按鈕
-(void)setSubviews{
[self.containerView addSubview:[self commonCreateMethod:@"qq"]];
[self.containerView addSubview:[self commonCreateMethod:@"qqZone"]];
[self.containerView addSubview:[self commonCreateMethod:@"weChat"]];
[self.containerView addSubview:[self commonCreateMethod:@"weChatLine"]];
[self.containerView addSubview:[self commonCreateMethod:@"sina"]];
//? ? [self.containerView addSubview:[self commonCreateMethod:@"healthCheck"]];
}
//創(chuàng)建按鈕的工作方法 初始化并且設(shè)置默認(rèn) 高亮?xí)r的圖片? 對(duì)圖片的處理
-(UIButton *)commonCreateMethod:(NSString *)imgName{
UIButton *btn=[[UIButton alloc]init];
btn.layer.cornerRadius=4;
btn.layer.masksToBounds=YES;
btn.tag=self.containerView.subviews.count;
[btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:imgName] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:imgName] forState:UIControlStateHighlighted];
//對(duì)圖片的處理
btn.imageView.contentMode=UIViewContentModeScaleAspectFill;
btn.imageView.clipsToBounds=YES;
return btn;
}
//按鈕的點(diǎn)擊方法
-(void)clickBtn:(UIButton *)btn{
NSInteger index=btn.tag;
switch (index) {
case 0:{
[UMSocialData defaultData].extConfig.title = @"分享的title";
[UMSocialData defaultData].extConfig.qqData.url = @"http://share.miusky.com?picUrl=fds";
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"];
[[UMSocialDataService defaultDataService]? postSNSWithTypes:@[UMShareToQQ] content:@"分享內(nèi)嵌文字" image:nil location:nil urlResource:urlResource presentedController:nil completion:^(UMSocialResponseEntity *shareResponse){
if (shareResponse.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享QQ成功琳水!");
}
}];
}
//QQ分享
break;
case 1:{
[UMSocialData defaultData].extConfig.title = @"蜜友天空";
[UMSocialData defaultData].extConfig.qzoneData.url=@"http://baidu.com";
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"];
[[UMSocialDataService defaultDataService]? postSNSWithTypes:@[UMShareToQzone] content:@"分享內(nèi)嵌文字" image:nil location:nil urlResource:urlResource presentedController:nil completion:^(UMSocialResponseEntity *shareResponse){
if (shareResponse.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享QQ空間成功肆糕!");
}
}];
}
//QQZone分享
break;
case 2:{
[UMSocialData defaultData].extConfig.title = @"蜜友天空";
[UMSocialData defaultData].extConfig.wechatSessionData.url=@"http://baidu.com";
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"];
[[UMSocialDataService defaultDataService]? postSNSWithTypes:@[UMShareToWechatSession] content:@"分享內(nèi)嵌文字" image:nil location:nil urlResource:urlResource presentedController:nil completion:^(UMSocialResponseEntity *shareResponse){
if (shareResponse.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享微信成功!");
}
}];
}
//微信分享
break;
case 3:{
[UMSocialData defaultData].extConfig.title = @"蜜友天空";
[UMSocialData defaultData].extConfig.wechatTimelineData.url=@"http://baidu.com";
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"];
[[UMSocialDataService defaultDataService]? postSNSWithTypes:@[UMShareToWechatTimeline] content:@"分享內(nèi)嵌文字" image:nil location:nil urlResource:urlResource presentedController:nil completion:^(UMSocialResponseEntity *shareResponse){
if (shareResponse.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享微信朋友圈成功炫刷!");
}
}];
}
//微信朋友圈分享
break;
default:{
[UMSocialData defaultData].extConfig.title = @"分享的title";
[UMSocialData defaultData].extConfig.sinaData.urlResource.url = @"http://baidu.com";
UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url:
@"http://www.baidu.com/img/bdlogo.gif"];
[[UMSocialDataService defaultDataService]? postSNSWithTypes:@[UMShareToSina] content:@"分享內(nèi)嵌文字" image:nil location:nil urlResource:urlResource presentedController:nil completion:^(UMSocialResponseEntity *shareResponse){
if (shareResponse.responseCode == UMSResponseCodeSuccess) {
NSLog(@"分享新浪微博成功擎宝!");
}
}];
}
break;
}
}
//布局本類對(duì)象的子視圖
-(void)layoutSubviews{
[super layoutSubviews];
//布局中間部分容器
self.containerView.frame=CGRectMake(0, 0, self.frame.size.width, 200);
//九宮格算法? 布局按鈕的位置
int colums=3;//每一行要顯示的列數(shù)? 及個(gè)數(shù)
CGFloat height=90; //視圖的寬高
CGFloat width=90;
CGFloat marginTop=6;
CGFloat marginX=(self.frame.size.width-colums*width)/4; //視圖x軸方向的間距
CGFloat marginY=7; //視圖y軸方向的間距
CGFloat marginLeft=(self.frame.size.width-colums*width-(colums-1)*marginX)/2;//視圖距離坐標(biāo)的距離
self.containerView.center=self.center;
self.btnYArray=[NSMutableArray arrayWithCapacity:0];//初始化真實(shí)值的數(shù)組
self.hiddenBtnYArray=[NSMutableArray arrayWithCapacity:0];//初始化視圖沒(méi)執(zhí)行動(dòng)畫之前的數(shù)組
//便利中間部分時(shí)間的子視圖 計(jì)算并排不位置