一、自定义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

马克。。。有点搞混了!

简单跳转到微信分享,基于libWeiChatSDK 和简单的自定义UIActivityViewController的更多相关文章

  1. 微信开发(一)基于Wx-java的微信分享功能

    最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基 ...

  2. IOS微信分享功能简单实现

    PS:此文以简单实现功能为主,不足之前还望指点,大神勿喷. 在此之前如何申请微信认证的Key就不说了,公司一般会有人搞 1.首先下载微信SDK:微信SDK下载地址(更多关于微信SDK信息文档请访问官方 ...

  3. 基于Django进行简单的微信开发

    代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...

  4. springboot 基于JS-SDK实现微信分享(一)

    本文主要介绍了SpringBoot 基于JS-SDK实现自定义微信分享,并通过本地测试的方式进行调试,文中通过微信实现分享流程及示例代码进行非常详细的介绍,希望本文对开发爱好者学习或者工作具有一定的参 ...

  5. 微信分享 分享icon和分享标题的简单设置

    前几天做的一个活动,用到微信分享功能,分享的icon.分享的标题和内容是自定义的.我上网查了一下,好多是注册微信公众号,使用微信api来实现的,注册微信号比较麻烦,最简单的方法就是 页面的title改 ...

  6. ionic2+Angular web端 实现微信分享以及如何跳转回分享出去的页面

    微信分享,首先参考微信JS-SDK开发文档. step1:在启动文件index.html中引入微信js文件: <script src="http://res.wx.qq.com/ope ...

  7. 一篇搞定微信分享和line分享

    前言 在h5的页面开发中,分享是不可或缺的一部分,对于一些传播性比较强的页面,活动页之类的,分享功能极为重要.例如,京东等电商年末时会有一系列的总结h5在微信中传播,就不得不提到微信的分享机制. 微信 ...

  8. 基于modelsim-SE的简单仿真流程—下

    基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...

  9. 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)

    最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场.等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,Shar ...

随机推荐

  1. Could not find the following Boost libraries: boost_python3

    安装Boost.NumPy时报错: CMake Error at /usr/share/cmake/Modules/FindBoost.cmake:1794 (message): Unable to ...

  2. 7.openssl enc

    对称加密工具.了解对称加密的原理后就很简单了. [root@xuexi tmp]# man enc NAME enc - symmetric cipher routines SYNOPSIS open ...

  3. [Tomcat 源码分析系列] (二) : Tomcat 启动脚本-catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 ca ...

  4. win8下始终以管理员身份运行vs2012的解决办法

    因为我的windows8不是专业版的,不能通过网上方法修改组策略,所以尝试了下面的方法: 1. 在vs2012快捷方式上,右键选择兼容性疑难解答: 2. 等待检测完,选择故障排除选项页面,选“疑难解答 ...

  5. NGUI缓动函数

    缓动函数:http://easings.net/zh-cn 研究NGUI的博客:http://dsqiu.iteye.com/category/295721

  6. Math Start!

    (1)Add Digits 解题思路: 基于同余的数学属性. 数字的根(即题目所要求返回的最终结果)与该数字除以9时的余数相同(并且该余数将始终为单个数字). take 438 as an examp ...

  7. iphone 开源汇总(转)

    原文地址 http://blog.csdn.net/devday/article/details/6105793 扫描wifi信息: http://code.google.com/p/uwecaugm ...

  8. find命令:忽略一个目录或者多个目录

    example: find ./ ! -path "./output/*" ! -path "./output1/*" -type f | xargs grep ...

  9. [python] python实现2048游戏,及代码解析。

    我初学python,有不对之处望大家指教.转载请征得同意. 我在网络上也找了一些2048游戏代码的讲解,但都不是特别详细.所以我希望能够尽量详细的讲解.同时,有的地方我也不懂,希望大家能帮助补充.我会 ...

  10. thinkphp ajax分页

    临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: 复制代码 <?php namespace Fenye\libs; /** file: page.class.php ...