全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS10 widget实现3Dtouch 弹出菜单

文章将依次从以下几个问题着手,进行详细说明:

1、如何为现有的工程添加widget;
2、如何绘制UI;
3、如何调起app;
4、如何与host app共享数据。

图2 添加today的target

图3 添加today之后的工程目录

这是添加Today Extension之后的工程目录。

到这里,为现有的工程添加Today Extension算是完成了,运行程序就可以看到类似图1的简单的效果了,很简单哈。

绘制UI

图4 删除默认创建的MainInterface并修改Info.plist

这里,删除默认创建的MainInterface.storyboard,并按图4所示修改Info.plist文件。(当然,习惯使用storyboard的童鞋可以略过,直接操作storyboar

图5 设置widget展示视图的大小

首先,设置widget展示视图的大小。关于widget的背景色,以及具体展示的内容大家按需绘制,这里暂且不表。

图6 设置widget视图距离左侧边界距离为0

运行程序后,会发现一个问题:绘制的内容与左侧边界有一定距离(约30px)。如何解决这个问题呢,如图6所示,TodayViewController遵守的NCWidgetProviding协议给出了解决方案。

调起app

因为extension和containing app是两个完独立的进程,所以它们之间不能直接通信(不能像应用内部点击按钮,跳转到指定页面)。为了实现widget调起app,这里通过openURL的方式来启动containing app。

- (void)openURLContainingAPP{ //通过extensionContext借助host app调起app [self.extensionContext openURL:[NSURL URLWithString:@"appextension://xxx"] completionHandler:^(BOOL success) { NSLog(@"open url result:%d",success); }];}

数据共享

图7 添加App Groups

通过App Groups提供的同一group内app共同读写区域,可以用NSUserDefaults和NSFileManager两种方式实现extension和containing app之间的数据共享。

1 通过NSUserDefaults共享数据

保存数据

- (void)saveDataByNSUserDefaults{ NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx"]; [shared setObject:@"asdfasdf" forKey:@"widget"]; [shared synchronize];}

读取数据

- (NSString *)readDataFromNSUserDefaults{ NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx"]; NSString *value = [shared valueForKey:@"widget"]; return value;}

2 通过NSFileManager共享数据

保存数据

- (BOOL)saveDataByNSFileManager{ NSError *err = nil; NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx"]; containerURL = [containerURL URLByAppendingPathComponent:@"Library/Caches/widget"]; NSString *value = @"asdfasdfasf"; BOOL result = [value writeToURL:containerURL atomically:YES encoding:NSUTF8StringEncoding error:&err]; if (!result) { NSLog(@"%@",err); } else { NSLog(@"save value:%@ success.",value); } return result;}
读取数据
- (NSString *)readDataByNSFileManager{ NSError *err = nil; NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx"]; containerURL = [containerURL URLByAppendingPathComponent:@"Library/Caches/widget"]; NSString *value = [NSString stringWithContentsOfURL:containerURL encoding:NSUTF8StringEncoding error:&err]; return value;}

    到这里,在Today中添加应用的widget就完成了,从Today中可以浏览预设的快捷服务,在文章iOS 10 Today Widget中接着说iOS 10的适配问题。

以上所述是小编给大家介绍的 iOS10 widget实现3Dtouch 弹出菜单,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# ios10  # 3dtouch  # widget 


相关文章: 宝塔Windows建站如何避免显示默认IIS页面?  内网网站制作软件,内网的网站如何发布到外网?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  如何在云主机快速搭建网站站点?  红河网站制作公司,红河事业单位身份证如何上传?  创业网站制作流程,创业网站可靠吗?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  建站之星CMS五站合一模板配置与SEO优化指南  山东网站制作公司有哪些,山东大源集团官网?  如何通过FTP空间快速搭建安全高效网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?    小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  设计网站制作公司有哪些,制作网页教程?  如何在Windows 2008云服务器安全搭建网站?  Thinkphp 中 distinct 的用法解析  招商网站制作流程,网站招商广告语?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  在线制作视频的网站有哪些,电脑如何制作视频短片?  建站之星如何实现网站加密操作?  网站制作的步骤包括,正确网址格式怎么写?  建站之星客服服务时间及联系方式如何?  如何在建站之星绑定自定义域名?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  想学网站制作怎么学,建立一个网站要花费多少?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  简历在线制作网站免费版,如何创建个人简历?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  如何生成腾讯云建站专用兑换码?  家具网站制作软件,家具厂怎么跑业务?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  高端企业智能建站程序:SEO优化与响应式模板定制开发  已有域名和空间如何搭建网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  高防服务器租用如何选择配置与防御等级?  建站之星价格显示格式升级,你的预算足够吗?  c# 在ASP.NET Core中管理和取消后台任务  建站VPS推荐:2025年高性能服务器配置指南  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何选择PHP开源工具快速搭建网站?  浅析上传头像示例及其注意事项  宝塔面板创建网站无法访问?如何快速排查修复?  如何通过虚拟机搭建网站?详细步骤解析  如何在腾讯云免费申请建站?  如何通过云梦建站系统实现SEO快速优化?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  如何在云服务器上快速搭建个人网站?  兔展官网 在线制作,怎样制作微信请帖? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。