在上一篇博客中,介紹了iOS8新特性擴展功能之一的Today功能:http://my.oschina.net/u/2340880/blog/485533,這裏咱們再介紹一下分享的擴展功能。app
在iOS8以前,除了一些主流的社交平臺,例如蘋果支持內容分享外,其餘開發者的應用若要加入分享的功能,將會十分的複雜。在iOS8的新特性中,apple爲咱們準備了這樣的擴展功能。函數
首先建立工程,在咱們的工程中新建一個Target:post
以後,模板中會爲咱們建立一個controller類,這個controller用於控制咱們的分享插件,裏面內容:測試
@implementation ShareViewController //這個函數用於判斷分享內容的可用性,咱們在其中獲取分享的內容進行檢查 - (BOOL)isContentValid { // Do validation of contentText and/or NSExtensionContext attachments here return YES; } //點擊post按鈕後出發的方法,咱們能夠在這裏將分享的內容進行上傳等操做 - (void)didSelectPost { // This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments. // Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context. [self.extensionContext completeRequestReturningItems:@[] completionHandler:nil]; } //這裏用於設置分享插件的附件按鈕 - (NSArray *)configurationItems { // To add configuration options via table cells at the bottom of the sheet, return an array of SLComposeSheetConfigurationItem here. return @[]; } @end
除此以外,還有一些經常使用的屬性:動畫
- (void)presentationAnimationDidFinish;spa
彈出視圖動畫結束後執行的方法.net
@property (readonly, NS_NONATOMIC_IOSONLY) NSString *contentText;插件
分享的內容文字code
@property (copy, NS_NONATOMIC_IOSONLY) NSString *placeholder;orm
默認顯示的提示文字
- (void)didSelectCancel;
取消按鈕執行的方法
咱們在代碼中以下添加後運行:
@implementation ShareViewController -(NSString *)placeholder{ return @"提示文字"; } - (NSArray *)configurationItems { // To add configuration options via table cells at the bottom of the sheet, return an array of SLComposeSheetConfigurationItem here. SLComposeSheetConfigurationItem * item =[[SLComposeSheetConfigurationItem alloc]init]; item.title=@"地點"; item.value=@"城門"; return @[item]; }
咱們用系統的相冊作測試,點擊相片的分享按鈕:
點擊MORE,添加咱們的擴展插件。
這時分享欄中多了一個咱們的插件,點擊效果以下:
還有一點咱們須要瞭解,在這個擴展的plist文件中,有這樣一個鍵:NSExtensionAttributes,裏面有一個NSExtensionActivationRule的字典,其中能夠設置一些鍵值,對分享插件的屬性進行控制。
這些鍵的寫法在官方文檔中的介紹以下:
這些鍵的意義,文檔中介紹的很清楚,咱們能夠根據須要進行設置。
專一技術,熱愛生活,交流技術,也作朋友。
——琿少 QQ羣:203317592