iOS自定义分享 UIAlertController

所谓的自定义就是自己动手写不需要现成的。
这两天在做分享的时候用到了ShareSDK,但是里面在微博分享时他总是会跳到网页版分享,但是我需要的是客户端分享而这儿的客户端需要又有一定的要求!so要使用客户端的话只能自己写了。(新手不对之处请谅解!)

当然是一个View
.h的内容

@protocol AlertDelegate <NSObject>

- (void)action_cancel;//取消
- (void)action_ShareWithNumber:(NSInteger )number;分享
@end

@interface AlertController : UIView
@property (nonatomic, weak) id deleate;
@end

.m的内容
我这是需要微博、微信、QQ的分享所以导入了

#import <ShareSDK/ShareSDK.h>
#import <TencentOpenAPI/QQApiInterface.h>
#import "WXApi.h"
#import <Masonry.h>
#import "Header.h"

我在这儿定义了三个属性

@property (nonatomic, strong) UILabel *labelWithButtonView;//显示分享图标的
@property (nonatomic, strong) UIButton *buttonWithCancel;//取消
@property (nonatomic, assign) NSInteger numberWithInstalled;

这是警示框界面方法

self.numberWithInstalled = 0;//初始为0
    NSArray *arrayWithIcon = [NSArray array];
    NSArray *arrayWithName = [NSArray array];
    arrayWithIcon = @[@"1sns_icon_1",@"1sns_icon_6",@"1sns_icon_24",@"1sns_icon_22",@"1sns_icon_23",@"1sns_icon_37"];
    arrayWithName = @[@"微博",@"QQ空间",@"QQ好友",@"微信好友",@"微信朋友圈",@"微信收藏"];
    if ([QQApiInterface isQQInstalled]) {
        //判断是否有qq
    } else {
        arrayWithIcon = @[@"1sns_icon_1",@"1sns_icon_22",@"1sns_icon_23",@"1sns_icon_37"];
        arrayWithName = @[@"微博",@"微信好友",@"微信朋友圈",@"微信收藏"];
        self.numberWithInstalled = 2;
    }
    
    if ([WXApi isWXAppInstalled]) {
        //判断是否有微信
    } else{
        arrayWithIcon = @[@"1sns_icon_1",@"1sns_icon_6",@"1sns_icon_24"];
        arrayWithName = @[@"微博",@"QQ空间",@"QQ好友"];
        self.numberWithInstalled = 1;
    }
    if ([WXApi isWXAppInstalled] || [QQApiInterface isQQInstalled]) {
        
    } else {
        arrayWithIcon = @[@"1sns_icon_1"];
        arrayWithName = @[@"微博"];
    }
//上面这个方法有点麻烦但是很实用的
    self.backgroundColor = GetColor(1, 1, 1, 0.4);
    [self addSubview:self.buttonWithCancel];
    [self.buttonWithCancel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.bottom.mas_equalTo(-10);
        make.left.mas_equalTo(10);
        make.right.mas_equalTo(-10);
        make.height.mas_equalTo(ADAPTATION_HEIGHT(50));
    }];
    [self addSubview:self.labelWithButtonView];
    __weak typeof(self) weakSelf = self;
    [self.labelWithButtonView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.bottom.mas_equalTo(-20 - ADAPTATION_HEIGHT(50));
        make.left.mas_equalTo(10);
        make.right.mas_equalTo(-10);
        if (weakSelf.numberWithInstalled == 0) {
            make.height.mas_equalTo(ADAPTATION_HEIGHT(200));
        } else {
            make.height.mas_equalTo(ADAPTATION_HEIGHT(100));
        }
        
    }];
    
    for (int i = 0; i < arrayWithIcon.count; i ++) {
        UIButton *bu = [[UIButton alloc]init];
        UILabel *label = [[UILabel alloc]init];
        if (i > 3) {
            bu.frame = CGRectMake(10 + MAINSCREEN_WIDTH / 4 * (i - 4), 10 + ADAPTATION_HEIGHT(100), ADAPTATION_WIDTH(60), ADAPTATION_WIDTH(60));
            label.frame = CGRectMake(10 + MAINSCREEN_WIDTH / 4 * (i - 4), ADAPTATION_WIDTH(70) + ADAPTATION_HEIGHT(100), ADAPTATION_WIDTH(60), 20);
        } else {
            bu.frame = CGRectMake(10 + MAINSCREEN_WIDTH / 4 * i, 10 , ADAPTATION_WIDTH(60), ADAPTATION_WIDTH(60));
            label.frame = CGRectMake(10 + MAINSCREEN_WIDTH / 4 * i, 70 , ADAPTATION_WIDTH(60), 20);
        }
        [bu setImage:IMGNAME(arrayWithIcon[i]) forState:UIControlStateNormal];
        bu.tag = 490 + i;
        [bu addTarget:self action:@selector(shareWithButton:) forControlEvents:UIControlEventTouchUpInside];
        [self.labelWithButtonView addSubview:bu];
        label.text = arrayWithName[i];
        label.textAlignment = NSTextAlignmentCenter;
        label.font = FONT(13);
        [self.labelWithButtonView addSubview:label];
    }

相对应的分享

- (void)shareWithButton:(UIButton *)sender{
    NSInteger number = sender.tag - 490;
    if (self.numberWithInstalled == 0) {
        [self.deleate action_ShareWithNumber:number];
        return;
    }
    if (number == 0) {
        [self.deleate action_ShareWithNumber:0];
    }
    //微信好友
    if (number == 1 && self.numberWithInstalled == 2) {
        [self.deleate action_ShareWithNumber:3];
    }
    //微信朋友圈
    if (number == 2 && self.numberWithInstalled == 2) {
        [self.deleate action_ShareWithNumber:4];
    }
    //微信收藏
    if (number == 3 && self.numberWithInstalled == 2) {
        [self.deleate action_ShareWithNumber:5];
    }
    //QQ空间
    if (number == 1 && self.numberWithInstalled == 1) {
        [self.deleate action_ShareWithNumber:1];
    }
    //QQ好友
    if (number == 2 && self.numberWithInstalled == 1) {
        [self.deleate action_ShareWithNumber:2];
    }
    
}

其他的都是Getter和Setter方法

在实现代理的类里面加入

#pragma mark - AlertDelegate
- (void)action_cancel{
    [self.aler removeFromSuperview];
}
- (void)action_ShareWithNumber:(NSInteger)number{
    NSLog(@"%ld",number);
    NSArray *imageArray = @[[UIImage imageNamed:@"1012@1024.png"]];
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    if (imageArray) {
        [shareParams SSDKSetupShareParamsByText:@""
                                         images:imageArray
                                            url:nil
                                          title:@""
                                           type:SSDKContentTypeAuto];
    }
    
    [shareParams SSDKEnableUseClientShare];
    
    //微博
    if (number == 0) {
            [ShareSDK share:SSDKPlatformTypeSinaWeibo parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
            }];
    }
    //QQ空间
    if (number == 1) {
        [ShareSDK share:SSDKPlatformSubTypeQZone parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
        }];
    }
    //QQ好友
    if (number == 2) {
        [ShareSDK share:SSDKPlatformSubTypeQQFriend parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
        }];
    }
    //微信好友
    if (number == 3) {
        [ShareSDK share:SSDKPlatformSubTypeWechatSession parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
                    }];
    }
    //微信朋友圈
    if (number == 4) {
        [ShareSDK share:SSDKPlatformSubTypeWechatTimeline parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
                    }];
    }
    //微信收藏
    if (number == 5) {
        [ShareSDK share:SSDKPlatformSubTypeWechatFav parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
                    }];
    }
    
}

需要其他的分享可以自行添加
这就能实现相应的分享 不足之处请请谅解!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,478评论 25 707
  • 由于近期工作需要自己抽时间搞了一下第三方分享,这里使用的是shareSDK的第三方,在使用的过程中有一些心得和体会...
    灿烂先森阅读 11,274评论 29 69
  • 前不久百度上输入“如何提高写作能力”时,看到了21天爱上写作训练营的承办人弘丹的一篇文章。当时自己正是处于写作茫然...
    小鹿故事集阅读 164评论 4 3
  • 我是日记星球133号星宝宝宋翠蓝,我正在参加日记星球第4期蜕变之旅。 原创日记(57)2017.04.14 多云 ...
    黑金公主阅读 1,641评论 0 1
  • 在这个世界上,总有不是大部分人做的了,但自己却做成了的事情。比如自驾新疆,算不上什么壮举,但周围的一众朋友,几乎都...
    萨妮的小天地阅读 372评论 0 0