一、自定义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. XidianOJ 1044 炸金花

    题目描述 炸金花是一个风靡全球的扑克游戏,不少人因为这个游戏发了家,而更多的人则输得倾家荡产.为了帮助赌徒们戒掉它,现在决定派你去写一个程序,帮助赌徒们更好的认识这个游戏. 炸金花在这里被简化成这样一 ...

  2. 配置Nginx支持SSL SNI(一个IP绑定多个证书) 以及Haproxy实现多域名证书

    概述 传统的每个SSL证书签发,每个证书都需要独立ip,假如你编译openssl和nginx时候开启TLS SNI (Server Name Identification) 支持,这样你可以安装多个S ...

  3. SQL Server 数据库的维护(三)__事务(transaction)和锁

    --维护数据库-- --事务(transaction)和锁-- --事务(transaction)-- --概述: 事务是指封装了一组T-SQL语句的单个逻辑单元.单元中的所有语句作为一个整体,在满足 ...

  4. android中dx、dp、dip、sp单位的区别

    1.dp=dip 2.px基于像素,后两者基于像素密度. 3.px既可用于宽度高度,也可用于字体,dp用于宽高,sp用于字体4.android中以320*480屏幕为基准.在相同值的px和dp,在32 ...

  5. Java 分页通用

    1.定义分页模型:PageModel package com.common.page; import java.util.List; /** * 封装分页信息 * @author Administra ...

  6. DataSnap 2009 系列之三 (生命周期篇)

    DataSnap 2009 系列之三 (生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置 当DSServer启动时从DSServerClass组 ...

  7. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...

  8. Qt事件过滤器Event Filter

    事件过滤器针对一类或者多种不同类型的对象,定义了重写操作. 简单的说: 1.先对UI对象注册Event Filter 例如:    ui->drawBtn->installEventFil ...

  9. CSS考试题目

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 阐述程序员如何实现IT职业定位

    [动力IT职业生涯规划课]阐述程序员如何实现IT职业定位 2016年9月16日下午17:00,南通动力IT教育创始人阙海忠先生,亲自向动力IT学员传授其十八年IT从业经验. 一个程序员的完美人生定位 ...