zoukankan      html  css  js  c++  java
  • 简单跳转到微信分享,基于libWeiChatSDK 和简单的自定义UIActivityViewController

       一、自定义UIActivity:

          如果想要自定义UIActivity必须知道UIActivityViewController。首先这个类主要是用于接受字符串,RUL类型和图片类型的数据用于分享和操作的,

    这一点可以从他的初始化方法中就可以看到。

    UIActivityViewController *activityView = [[UIActivityViewController alloc] 
    initWithActivityItems:activityItems applicationActivities:activities];

    其中activityItems中一个数组,用于存储需要传输的数据,例如需要分享的网址,图片,或者要进行操作的文档。

    applicationActivities 也是一数组用于存在需要进行的操作,如果没有自定义的UIActivity,一般都是nil,展示出来的都是一些系统样式。当然系统也封装了一些分享的代码,例如

    UIActivityCategoryAction(操作类,用于打印,投影等)

    1. UIActivityTypePrint
    2. UIActivityTypeCopyToPasteboard
    3. UIActivityTypeAssignToContact
    4. UIActivityTypeSaveToCameraRoll
    5. UIActivityTypeAddToReadingList
    6. UIActivityTypeAirDrop

    UIActivityCategoryShare(分享类,用于分享,发送等)

    1. UIActivityTypeMessage
    2. UIActivityTypeMail
    3. UIActivityTypePostToFacebook
    4. UIActivityTypePostToTwitter
    5. UIActivityTypePostToFlickr
    6. UIActivityTypePostToVimeo
    7. UIActivityTypePostToTencentWeibo(腾讯微博)
    8. UIActivityTypePostToWeibo(系统自己封装了新浪微博)

    系统会检测你所有用于应用的操作,显示在操作面板上面。当然你可以通过

        activityViewC.excludedActivityTypes = @[];筛选出你不需要的类型。

    当然根据操作的不同,携带的东西都也有略微的差别,具体自己查阅文档

         前面大致简单介绍一下UIActivityViewController,现在开始自定义UIActivity

    <UIActivityItemSource>
    获取数据项

    1.  activityViewControllerPlaceholderItem:
    2.  activityViewController:itemForActivityType

    提供数据项

    1. activityViewController:subjectForActivityType:
    2. activityViewController:dataTypeIdentifierForActivityType:
    3. activityViewController:thumbnailImageForActivityType:suggestedSize:

    上述方法都是需要重写的:

    #pragma mark    显示
    + (UIActivityCategory)activityCategory {
        //返回值是告诉系统这个是action类型,还是share类型的,一般默认的是action类型的,所以我们在这里返回一个action类型
        return UIActivityCategoryAction;
    }
    
    - (NSString *)activityType {
        //用来区分不用的activity的字符串,用于你的bundle id作为前缀
        return [NSString stringWithFormat:@"%@.NCActivity",[NSBundle mainBundle].bundleIdentifier];
    }
    
    - (NSString *)activityTitle {
        return @"返回的是选项图标下面的文字";
    }
    
    - (UIImage *)activityImage {
    //    因为是ios8.0,所以是支持彩色团素材的,返回的是你所要点击的图标,
        return [UIImage imageNamed:@"wechat_session"];
    }
    
    
    #pragma mark  操作
    - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
        for (id item in activityItems) {
            if ([item isKindOfClass:[UIImage class]]) {
                return YES;
            }
            
            if ([item isKindOfClass:[NSString class]]) {
                return YES;
            }
            
            if ([item isKindOfClass:[NSURL class]]) {
                return YES;
            }
        }
             return NO;
        //设置可以操作的数据,
    }
    
    - (void)prepareWithActivityItems:(NSArray *)activityItems {
        //准备分享所进行的方法,通常在这个方法里面,把item中的东西保存下来
        for (id item in activityItems) {
            if ([item isKindOfClass:[UIImage class]]) {
                self.image = (UIImage *)item;
            }
            
            if ([item isKindOfClass:[NSString class]]) {
                self.text = (NSString *)item;
            }
            
            if ([item isKindOfClass:[NSURL class]]) {
                self.url = (NSURL *)item;
            }
        }
    }
    
    - (void)performActivity {
        //这里就可以关联外面的app进行分享操作了
        //也可以进行一些数据的保存等操作
        //操作的最后必须使用下面方法告诉系统分享结束了
        [self activityDidFinish:YES];
    }

    二、简单跳转到微信分享

    这里主要用到一个第三方的SDK:libWeiChatSDK.a

    马克。。。有点搞混了!

  • 相关阅读:
    ちょっとした難しい言葉まとめ10
    ちょっとした難しい言葉まとめ9
    ちょっとした難しい言葉まとめ8
    ページの先頭へジャンプするボタンを作るには?
    Interaction with the camera or the photo library
    ナビゲーションバー
    javascript 小计
    爬mei紫图最后代码2015-2019-1-14全部
    备份
    爬mei紫图
  • 原文地址:https://www.cnblogs.com/naizui/p/5268587.html
Copyright © 2011-2022 走看看