iOS10 widget实现3Dtouch 弹出菜单

 更新时间:2016年12月19日 14:33:39   投稿:mrr  
这篇文章主要介绍了 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 弹出菜单,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • iOS应用开发中使用NSLocale类实现对象信息的本地化

    iOS应用开发中使用NSLocale类实现对象信息的本地化

    这篇文章主要介绍了iOS应用开发中使用NSLocale类实现对象信息的本地化的方法,能够将时间和货币等格式化为与系统本地设置相同的偏好,需要的朋友可以参考下
    2016-05-05
  • iOS正则表达式验证手机号、邮箱、身份证号等

    iOS正则表达式验证手机号、邮箱、身份证号等

    这篇文章主要介绍了iOS正则表达式验证手机号、邮箱、身份证号等信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • IOS开发实现录音功能

    IOS开发实现录音功能

    本文给大家分享的是一个IOS开发中实现录音功能的实例,并简单给大家解析一下,有需要的小伙伴可以参考下
    2016-03-03
  • 详解iOS 滚动视图的复用问题解决方案

    详解iOS 滚动视图的复用问题解决方案

    本篇文章主要介绍iOS 滚动视图的复用问题解决方案,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • iOS 11 safeArea详解及iphoneX 适配

    iOS 11 safeArea详解及iphoneX 适配

    本篇文章主要介绍了iOS 11 safeArea详解及iphoneX 适配,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • iOS优化UITableViewCell高度计算的一些事儿

    iOS优化UITableViewCell高度计算的一些事儿

    这iOS开发中对于UITableViewCell高度自适应的文章已经很多很多,但都不是自己所需要的,下面篇文章主要给大家介绍了关于iOS优化UITableViewCell高度计算的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • iOS中NSObject的两种含义:类和协议详解

    iOS中NSObject的两种含义:类和协议详解

    这篇文章主要给大家介绍了关于iOS中NSObject的两种含义:类和协议的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • iOS开发中实现新闻图片的无限循环展示的方法

    iOS开发中实现新闻图片的无限循环展示的方法

    这篇文章主要介绍了iOS开发中实现新闻图片的无限循环展示的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • iOS UITextField 显示银行卡格式的方法

    iOS UITextField 显示银行卡格式的方法

    下面小编就为大家分享一篇iOS UITextField 显示银行卡格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 浅谈iOS应用中的相关正则及验证

    浅谈iOS应用中的相关正则及验证

    下面小编就为大家带来一篇浅谈iOS应用中的相关正则及验证。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04

最新评论