随笔 - 298  文章 - 377  trackbacks - 0
<2016年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(34)

随笔分类

随笔档案

文章档案

相册

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜

http://www.cocoachina.com/bbs/read.php?tid-333675.html

以下程序并不是都好使,不过在我的机器上都ok,有以下的限制,希望大家都检查一下自己的设备是否能用。另外就是分享的顺序,可能会乱序,这个我一直无法解决。。。如果有人能处理了,希望也提供一下。

1.  ios8.0以上。
2. 微信版本,尽量比较新。

以上两个功能,可以用在相册里面选择一个图片,看看是否可以分享到微信,如果可以,证明系统跟微信版本都ok。

3. 要分享的图片不要太大,这个问题,我遇到过,所以最后我在上传到服务器的时候,就处理了,所以这里下载的网络图片,都是很小的,没有进行压缩。如果选择本机图片,建议进行压缩之后,用新的压缩过的图片进行分享。我试验过,一些png图片大概3M左右就会无法弹出微信分享的情况。最后我都弄到300K之内的jpg图片了。。。基本上不会出现因为图片大导致的问题。。。

以上三点满足之后,下面的代码,在我的设备上是可以使用的。。。部分代码因为有自己的数据结构,所以可能会导致迷惑,但是相信大家都能看明白个思路,主要就是添加的分享类型我试验了好多,貌似就这个成功率最高。

NSMutableArray *activityItems = [NSMutableArray array];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachesDir = [paths objectAtIndex:0];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    for(int i = 0;i<9;i++)
    {
       //文件名请自己处理
        NSString *filename = [NSString stringWithFormat:@"car/shared_%@.jpg", @"1"];
        NSString *filestr = [NSString stringWithFormat:@"%@/%@", cachesDir, filename];
        if(![fileManager fileExistsAtPath:filestr])
        {
            //图片路径请处理成自己的
            UIImage * imageFromURL = [PicCache getImageFromURL:[NSString stringWithFormat:@"%@%@",“www.host.com", ”FFFF.jpg"]];
            [PicCache saveImage:imageFromURL withFileName:filestr ofType:@"jpg"];
        }
        NSURL *shareobj = [NSURL fileURLWithPath:filestr];
        // 试验了好多参数,就这个参数部分好使了。
        [activityItems addObject:shareobj];
        
    }
    
    NSLog(@"%@",activityItems);
    UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    // 这个参数貌似是ipad必须填写??有点忘记了。
    activityView.modalInPopover = true;
    activityView.restorationIdentifier = @"activity";
    [self presentViewController:activityView animated:YES completion:nil];



picCache是个功能类,没啥正经功能。。。。就是抽象出来一些保存读取的。。。

#import <Foundation/Foundation.h>
#import "PicCache.h"

@interface PicCache(){
}

@end


@implementation PicCache

+(UIImage *) getImageFromURL:(NSString *)fileURL {
    NSLog(@"执行图片下载函数");
    UIImage * result;
    
    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
    result = [UIImage imageWithData:data];
    
    return result;
}

+(NSData *) getDataFromURL:(NSString *)fileURL {
    NSLog(@"执行图片下载函数");
    
    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
    
    return data;
}

+(UIImage *) loadImage:(NSString *)fileName
{
    UIImage * result = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@", fileName]];
    
    return result;
}

+(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension
{
    NSString *filePath = imageName;
    if ([[extension lowercaseString] isEqualToString:@"png"])
    {
        BOOL isOK = [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];
        NSLog([NSString stringWithFormat:@"%d",isOK]);
    }
    else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"])
    {
        BOOL isOK = [UIImageJPEGRepresentation(image, 0.7) writeToFile:filePath atomically:YES];
        NSLog([NSString stringWithFormat:@"%d",isOK]);
    }
    else
    {
        NSLog(@"文件后缀不认识");
    }
}

@end 
posted on 2016-04-08 10:55 聂文龙 阅读(2591) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理