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
聶文龍 閱讀(2642)
評論(0) 編輯 收藏 引用