UIActivityViewController
在使用了QQ、微信等的原生與第三方分享SDK之后,我更喜歡iOS自帶分享框架UIActivityViewController,UIActivityViewController繼承自UIViewController,簡直不能更加便捷簡單了,也不用去申請QQ、微信(每年¥300)等的key與id了,好了下面就來看UIActivityViewController的基本用法,自定義有空再寫。一定要記得判斷iPad環境,不然在iPad上直接present要crash,且crash原因會是UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7fce54d70b50>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.這就需要你判斷為iPad環境時需要pop,加上popoverPresentationController.sourceView就好了。
NSString *textToShare = @"我就是喜歡踩坑呢,咋的了。生活不止眼前的茍且,還有翔和未來的茍且。";
UIImage *imageShare = [UIImage imageNamed:@"這兒放你自己的圖片"];
NSURL *urlShare = [NSURL URLWithString:@"http://www.lxweimin.com/u/9ab932a98604"];
NSArray *activityItems = @[textShare, imageShare, urlShare];
UIActivityViewController *actVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
//下面的excludedActivityTypes填寫你需要剔除的(比如打印UIActivityTypePrint,短信UIActivityTypeMessage),不寫excludedActivityTypes這一行即使用系統默認的,好了,我們來看一下excludedActivityTypes的所有值。
UIKIT_EXTERN NSString *const UIActivityTypePostToFacebook NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //發送到Facebook
UIKIT_EXTERN NSString *const UIActivityTypePostToTwitter NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //發送到Twitter
UIKIT_EXTERN NSString *const UIActivityTypePostToWeibo NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //發送到新浪微博
UIKIT_EXTERN NSString *const UIActivityTypeMessage NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //短信
UIKIT_EXTERN NSString *const UIActivityTypeMail NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //郵件
UIKIT_EXTERN NSString *const UIActivityTypePrint NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //打印
UIKIT_EXTERN NSString *const UIActivityTypeCopyToPasteboard NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //拷貝
UIKIT_EXTERN NSString *const UIActivityTypeAssignToContact NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //指定給聯系人
UIKIT_EXTERN NSString *const UIActivityTypeSaveToCameraRoll NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED; //保存至相機膠卷
UIKIT_EXTERN NSString *const UIActivityTypeAddToReadingList NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; //添加至閱讀列表
UIKIT_EXTERN NSString *const UIActivityTypePostToFlickr NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; //發送到Flickr(雅虎旗下圖片分享網站)
UIKIT_EXTERN NSString *const UIActivityTypePostToVimeo NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; //發送到Vimeo
UIKIT_EXTERN NSString *const UIActivityTypePostToTencentWeibo NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; //發送到騰訊微博
UIKIT_EXTERN NSString *const UIActivityTypeAirDrop NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; //AirDrop
UIKIT_EXTERN NSString *const UIActivityTypeOpenInIBooks NS_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED; //在iBooks中打開
actVC.excludedActivityTypes = @[UIActivityTypeMessage,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypeAirDrop];
//這兒一定要做iPhone與iPad的判斷,因為這兒只有iPhone可以present,iPad需pop,所以這兒actVC.popoverPresentationController.sourceView = self.view;在iPad下必須有,不然iPad會crash,self.view你可以換成任何view,你可以理解為彈出的窗需要找個依托。
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
actVC.popoverPresentationController.sourceView = self.view;
[self presentViewController:actVC animated:YES completion:nil];
} else {
[self presentViewController:actVC animated:YES completion:nil];
}