全网整合营销服务商

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

免费咨询热线: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 


相关文章: 攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何配置支付宝与微信支付功能?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何自定义建站之星模板颜色并下载新样式?  音乐网站服务器如何优化API响应速度?  制作电商网页,电商供应链怎么做?  如何快速搭建高效WAP手机网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  建站主机服务器选购指南:轻量应用与VPS配置解析  如何在云指建站中生成FTP站点?  建站主机类型有哪些?如何正确选型  红河网站制作公司,红河事业单位身份证如何上传?  如何通过免费商城建站系统源码自定义网站主题与功能?  家庭服务器如何搭建个人网站?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何制作一个表白网站视频,关于勇敢表白的小标题?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  湖北网站制作公司有哪些,湖北清能集团官网?  Python路径拼接规范_跨平台处理说明【指导】  Python如何创建带属性的XML节点  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何快速重置建站主机并恢复默认配置?  建站主机是什么?如何选择适合的建站主机?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何高效完成自助建站业务培训?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  怎么将XML数据可视化 D3.js加载XML  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何基于PHP生成高效IDC网络公司建站源码?  建站VPS推荐:2025年高性能服务器配置指南  清除minerd进程的简单方法  建站之星免费版是否永久可用?  如何获取免费开源的自助建站系统源码?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  ,在苏州找工作,上哪个网站比较好?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  ui设计制作网站有哪些,手机UI设计网址吗?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  建站主机是否等同于虚拟主机?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  南京网站制作费用,南京远驱官方网站?  盐城做公司网站,江苏电子版退休证办理流程?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  定制建站流程步骤详解:一站式方案设计与开发指南  如何通过IIS搭建网站并配置访问权限?  常州企业网站制作公司,全国继续教育网怎么登录? 

您的项目需求

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