玩轉iOS開發:iOS 10 新特性《Siri Kit Intents Extension UI》

CainLuo發表於2017-06-20

文章分享至我的個人技術部落格: https://cainluo.github.io/14978567639492.html


Siri Kit Intents Extension UI

之前我們講了Siri Kit Intents Extension, 但並沒有去講到UI的方面, 這次我們把最後一丟丟給講完把.

這裡所用的工程還是之前的, 如果不懂得朋友, 可以去看看的那篇文章, 裡面也有工程的下載地址.

這裡的工程是Objective-C版本的, 如果要看Swift版本, 可以到這裡去檢視.


定製UI

這裡就不扯那麼多廢話了, 我們可以在SiriKitIntentsExtensionUI資料夾裡找到MainInterface.storyboard檔案, 在這裡佈置我們想要的UI:

1

然後和Controller關聯起來:

2


具體實現

回到我們的IntentViewController.m檔案, 在- (void)configureWithInteraction:(INInteraction *)interaction context:(INUIHostedViewContext)context completion:(void (^)(CGSize))completion;方法裡開始寫我們的程式碼:

    // 擷取傳送訊息的Intent
    INSendMessageIntent *intent = (INSendMessageIntent *)(interaction.intent);
    
    // 獲取使用者資訊
    NSString *name = [[intent.recipients lastObject] displayName];
    NSString *content = intent.content;
    NSString *icon = [UserList checkUserWithName:name].userIcon;

    // 展示自己與接收人的頭像
    self.userImageIcon.image = [UIImage imageNamed:@"icon3"];
    self.toUserImageIcon.image = [UIImage imageNamed:icon];
    
    // 改變標題
    self.sectionTitleLabel.text = [NSString stringWithFormat:@"與\"%@\"對話", name];
    
    // 傳送的訊息內容
    self.messageContentLabel.text = content;
    
    // 隱藏或顯示控制元件
    self.sectionTitleLabel.hidden      = !name.length;
    self.messageContentLabel.hidden    = !content.length;
    self.messageBackgroundImage.hidden = !content.length;
    self.toUserImageIcon.hidden        = !self.toUserImageIcon.image;
    
    if (completion) {
            completion(CGSizeMake([self desiredSize].width, 150));
    }
複製程式碼

效果:

3

雖然UI已經展示了, 但特麼好像有些多啊, 這裡我們需要新增多一個協議, 並且是寫一個協議的方法:

@interface IntentViewController () <INUIHostedViewSiriProviding>

@end

- (BOOL)displaysMessage {
    return YES;
}
複製程式碼

效果:

4

這裡我們需要注意一點, 開啟工程的配置, 看到SiriKitIntentsExtensionSiriKitIntentsExtensionUICopy Bundle Resources有沒有連結Assets.xcassets, 如果沒有連結上的話, 那就會造成本地圖片沒法展示:

5


工程地址

專案地址: https://github.com/CainRun/iOS-10-Characteristic/tree/master/10.Siri%20Intents%20UI


最後

碼字很費腦, 看官賞點飯錢可好

微信

支付寶

相關文章