玩转iOS开发:iOS 10 新特性《Siri Kit Intents Extension UI》

1,134 阅读1分钟

文章分享至我的个人技术博客: 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


最后

码字很费脑, 看官赏点饭钱可好

微信

支付宝