1、概要
隨着iOS平臺逐漸成熟,連最初讓人惱火的社區分享功能現在都變的幾行代碼就可以搞定,下面分享下“分享”功能原生實現。
2、實現
iOS6之前使用TWTweetComposeViewController實現分享功能,但iOS6之後改用SLComposeViewController實現,實現方式很簡單,而且大同小異,下面看看SLComposeViewController如何實現,由於iOS5逐漸的淡出人們的視野,所以TWTweetComposeViewController可以忽略了!
以新浪微博分享爲例:首先導入框架 #import <Social/Social.h>,不多說了,iOS開發基礎內容。
- (void)shareWeibo {
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
if (result == SLComposeViewControllerResultCancelled) {
NSLog(@"取消");
} else {
NSLog(@"分享成功");
}
[controller dismissViewControllerAnimated:YES completion:Nil];
};
controller.completionHandler =myBlock;
[controller setInitialText:@"我是此微博標題,告訴你可以點網頁連接,可以跳轉到百度首頁!"];
[controller addURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[controller addImage:[UIImage imageNamed:@"fb.png"]]; //微博中的圖片,那張黑色的小圖片
[self presentViewController:controller animated:YES completion:Nil];
}
else{
NSLog(@"分享功能不可用,請打開設置並找到相應分享平臺,然後帳號登錄。相當於在iOS設備中配置相應分享平臺,和配置郵箱類似!");
}
}
效果圖:
注意:這個分享框是系統提供的,不需要自定義
蘋果還提供了其它幾種分享渠道:
SLServiceTypeTwitter NS_AVAILABLE(10_8, 6_0);
SLServiceTypeFacebook NS_AVAILABLE(10_8, 6_0);
SLServiceTypeSinaWeibo NS_AVAILABLE(10_8, 6_0);
SLServiceTypeTencentWeibo NS_AVAILABLE(10_9, 7_0);
SLServiceTypeLinkedIn NS_AVAILABLE(10_9, NA);
補充:
1、如果發現點擊分享後無反應,應該是沒有配置相應分享平臺的帳號,打開設置,找到相應平臺,然後登錄。然後在點擊Demo中的分享就可以了。