在iOS8之前,除了一些主流的社交平台,例如蘋果支援内容分享外,其他開發者的應用若要加入分享的功能,将會十分的複雜。在iOS8的新特性中,apple為我們準備了這樣的擴充功能。
首先建立工程,在我們的工程中建立一個Target:
之後,模闆中會為我們建立一個controller類,這個controller用于控制我們的分享插件,裡面内容:
<a href="http://my.oschina.net/u/2340880/blog/485656#">?</a>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code>@implementation ShareViewController</code>
<code>//這個函數用于判斷分享内容的可用性,我們在其中擷取分享的内容進行檢查</code>
<code>- (</code><code>BOOL</code><code>)isContentValid {</code>
<code> </code><code>// Do validation of contentText and/or NSExtensionContext attachments here</code>
<code> </code><code>return</code> <code>YES;</code>
<code>}</code>
<code>//點選post按鈕後出發的方法,我們可以在這裡将分享的内容進行上傳等操作</code>
<code>- (</code><code>void</code><code>)didSelectPost {</code>
<code> </code><code>// This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments.</code>
<code> </code>
<code> </code><code>// 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.</code>
<code> </code><code>[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];</code>
<code>//這裡用于設定分享插件的附件按鈕</code>
<code>- (NSArray *)configurationItems {</code>
<code> </code><code>// To add configuration options via table cells at the bottom of the sheet, return an array of SLComposeSheetConfigurationItem here.</code>
<code> </code><code>return</code> <code>@[];</code>
<code>@end</code>
除此之外,還有一些常用的屬性:
- (void)presentationAnimationDidFinish;
彈出視圖動畫結束後執行的方法
@property (readonly, NS_NONATOMIC_IOSONLY) NSString *contentText;
分享的内容文字
@property (copy, NS_NONATOMIC_IOSONLY) NSString *placeholder;
預設顯示的提示文字
- (void)didSelectCancel;
取消按鈕執行的方法
我們在代碼中如下添加後運作:
<code>-(NSString *)placeholder{</code>
<code> </code><code>return</code> <code>@</code><code>"提示文字"</code><code>;</code>
<code> </code><code>SLComposeSheetConfigurationItem * item =[[SLComposeSheetConfigurationItem alloc]init];</code>
<code> </code><code>item.title=@</code><code>"地點"</code><code>;</code>
<code> </code><code>item.value=@</code><code>"城門"</code><code>;</code>
<code> </code><code>return</code> <code>@[item];</code>
我們用系統的相冊做測試,點選相片的分享按鈕:
點選MORE,添加我們的擴充插件。
這時分享欄中多了一個我們的插件,點選效果如下:
還有一點我們需要了解,在這個擴充的plist檔案中,有這樣一個鍵:NSExtensionAttributes,裡面有一個NSExtensionActivationRule的字典,其中可以設定一些鍵值,對分享插件的屬性進行控制。
這些鍵的寫法在官方文檔中的介紹如下:
這些鍵的意義,文檔中介紹的很清楚,我們可以根據需要進行設定。