IOS6开始, 系统提供了UIActivityViewController, 对图片,文字,url进行相关的操作. 对于缺乏UI设计师的开发来说, 使用它进行轻量级的分享是很好的选择.

最大的缺点是自定义的分享服务,图标都是灰色的.

使用微信进行分享的例子:

1 定义WeiXinActivity类.

@interface WeiXinActivity:UIActivity
{
UIImage* _imageForShare;
NSString* _messageForShare;
} @end const NSString* WeiXinActivityType = @"WeiXinActivity";
@implementation WeiXinActivity
- (NSString *)activityType
{
return [NSString stringWithString:WeiXinActivityType];
} - (NSString *)activityTitle
{
return @"微信";
} - (UIImage *)activityImage
{
return [UIImage imageNamed:@"SA_Weixin.png"];
} - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
BOOL bins = [WXApi isWXAppInstalled]&& [WXApi isWXAppSupportApi];
if (!bins) {
return NO;
} for (id item in activityItems) {
if ([item isKindOfClass:[UIImage class]]) {
return YES;
}
}
return NO;
} - (void)prepareWithActivityItems:(NSArray *)activityItems
{
for (id item in activityItems) {
if ([item isKindOfClass:[UIImage class]]) {
_imageForShare =item; }
else if([item isKindOfClass:[NSString class]]) {
_messageForShare =item; } }
} - (UIViewController *)activityViewController
{
return nil;
} - (void)performActivity
{
WXMediaMessage *message = [WXMediaMessage message]; UIImage* thumb = [ImageHelper image:_imageForShare fitInSize:CGSizeMake(, )];
[message setThumbImage:thumb];
WXImageObject *ext = [WXImageObject object]; ext.imageData = UIImageJPEGRepresentation(_imageForShare, 0.9); message.mediaObject = ext; SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message; BOOL b= [WXApi sendReq:req]; [self activityDidFinish:b];
} @end

    

2 使用WeixinActivity进行分享:

@implementation ShareWarper
+(NSArray*)additionShartTargets
{
WeiXinActivity* weiXin = [[WeiXinActivity alloc] init];
//TencentOpenActivity* tencent = [[TencentOpenActivity alloc] init]; return @[weiXin];
} +(void)share:(NSArray*)items from:(UIViewController<ShareWarperDelegate>*)vc
{
UIActivityViewController *activityVC =
[[UIActivityViewController alloc] initWithActivityItems:items
applicationActivities:[ShareWarper additionShartTargets]];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact,UIActivityTypeMessage,UIActivityTypePrint,UIActivityTypeCopyToPasteboard]; __weak UIViewController<ShareWarperDelegate>* weakRef = vc; activityVC.completionHandler = ^(NSString *activityType, BOOL completed){
[weakRef shareTo:activityType completed:completed];
}; [vc presentViewController:activityVC animated:YES completion:nil];
} @end

使用subclass UIActivity的方案来分享图片的更多相关文章

  1. 微信在IOS7下无法分享图片

    家里老大的iphone5在WWDC后第一时间升级了IOS7. 整体的UI风格和功能都很喜欢, 偶尔的crash还能接受. 但是最常用的软件之一微信,在IOS7下无法分享图片这点一直让她耿耿于怀. 从用 ...

  2. Android微信分享图片大于32k进行压缩

    微信分享视频的时候,需要传一个图片数组,大小不能大于32k. 解决方案:使用Bitmap自带的compress方法解决了这个问题. 源码如下: <span style="font-si ...

  3. Android 高清加载巨图方案 拒绝压缩图片

    Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自:[张 ...

  4. iOS 学习 - 13.微信分享链接、QQ 分享图片

    准备工作---原文来自这个 首先要在微信开放平台申请 AppID 和 QQ ID(我第一天晚上申请的,第二天中午就通过了),接着导入 SDK,也就是3个 .h 和一个 .a 文件,详情见这里 如果你是 ...

  5. 微信朋友圈如何同时分享(图片+文字) Android版

    以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activit ...

  6. 使用pillow生成分享图片

    重复性的工作一定要交给计算机去做! 有时候要为公司做一张宣传用的分享图片,很简单交给设计通过ps.AI做好就行了,但是如果一个网站要为每个用户生成一张专属的分享图片,如果让设计师一张一张的去做,哪设计 ...

  7. Android实现分享图片和文字的功能

    为了应用的推广,我们经常看到点击分享按钮会出现,比如微博微信等应用的分享二等列表,这是如何实现的呢?这一篇将要详细的介绍. android的实现分享是通过隐式的启动activity. 分享文本 1.a ...

  8. H5_0008:链接分享图片和判断平台

    <!--分享图片--><div id="share_img" style="display:none;"><img class=& ...

  9. shareSdk分享图片

    /** * 只分享图片 * * @param bitmap bitmap */ private void sharedImage(Bitmap bitmap) { RxPermissions rxPe ...

随机推荐

  1. fatal error: 'XCTest/XCTest.h' file not found

    这个报错在几个方面.第一,它导致XCTedt依赖您的应用程序.框架,它只是在Xcode中可用.第二,你使用绝对路径,这并不保证是相同的从Mac Mac(例如,如果你安装了多个版本的Xcode). 这里 ...

  2. 'java'不是内部或外部命令,另一个解决办法

    我知道环境变量,也知道搞系统变量.别给我粘那些教程了,我的java路程是C:\Program Files\Java\jdk1.6.0_05谁弄好了把那三个变量和值发出来.... JAVA_HOME=C ...

  3. SharePoint 2013 CSOM 对象模型属性包

     博客地址:http://blog.csdn.net/FoxDave 虽说是翻译,但是并没什么翻译的,主要内容就是说有一些能通过Server API配置的Site/Web属性在CSOM中找不到,其 ...

  4. EL和JSTL专题

    EL简介 EL全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言.当时只能在JSTL标签中使用,如下: <c:out value="${ ...

  5. php生成html文件的多种方法介绍

    我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单.  代码如下 复制代码 <?php//在你的开始处加入 ob_start(); ob_start(); //以下是你的代 ...

  6. css 笔记

    外边距合并 当一个元素出现在另一个元素的上面时,第一个元素的下外边距和第二个元素的上外边距会产生合并,两个盒子之间的上下间距为大的数值. 当一个子元素包含在另外一个父元素(假设没有内边距 没有边框), ...

  7. 解决maven生成的web项目下的servlet.jar与tomcat自带servlet.jar冲突的问题

    使用maven生成web工程后,编译需要下servlet-api.jar和jsp-api.jar文件. pom文件中的写法为: <dependency> <groupId>ja ...

  8. Excel的python读写

    实际工作中可能需要整理一些文档,或者记录一些数据,这时候使用python来操作Excel可能会帮得上你. 读操作: # encoding : utf-8 #设置编码方式 import xlrd #导入 ...

  9. Three.js typescript definitely typed 文件

    最近学习three.js,想用typescript编写代码,去http://definitelytyped.org/找了一圈没有发现three.js的definitely typed文件. 好吧,花了 ...

  10. 使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题

    问题呈现:弹出框页面 <tr class="addtr"> <th>内容</th> <td> <!-- <textare ...