一、自定义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. 利用nginx来屏蔽指定的user_agent的访问以及根据user_agent做跳转

    对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁.这些垃圾流量多了之后,严重浪费服务器的带宽和资源.通过判断user agent,在nginx中禁用这些蜘蛛可 ...

  2. {ICIP2014}{收录论文列表}

    This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...

  3. Install Shield 打包教程

    我的是已经下载过打包工具InstallShield2013LimitedEdition,没有下载的只有下面那个灰色的的图标,不过没关系选中灰色的点确定直接跳到下载页面了.下载完成后再重新添加安装和部署 ...

  4. makefile:2: *** 遗漏分隔符 。 停止

    from http://hi.baidu.com/��֮��/blog/item/8ec00e2aca65a525d42af11b.html 我们在编写完makefile,然后在终端中 $make出现 ...

  5. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 .日志服务 在CentOS .x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服 ...

  6. 基于VLC的视频播放器(转载)

    最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性很大. 找到了一个比较合适的播 ...

  7. LAMP环境

    LAMP =  Linux + Apache + MySQL + PHP    [1]     [2]      [3]     [4] [1]Linux是一套免费使用和自由传播的类Unix操作系统, ...

  8. WPF开发经验

    UpdateSourceTrigger 0.在一个项目中在用到绑定的时候一直有一个问题,虽然设置了Mode=TwoWay,界面的值修改了,但是后天绑定的值没有变化.最终发现了问题,在于UpdateSo ...

  9. poj1157LITTLE SHOP OF FLOWERS

    Description You want to arrange the window of your flower shop in a most pleasant way. You have F bu ...

  10. C/C++ 记录时间

    http://stackoverflow.com/questions/2808398/easily-measure-elapsed-time https://github.com/picanumber ...