3DTouch相关

demo下载

1、Home Screen Quick Actions

效果如下:

 

实现方法一:(用代码写)

在AppDelegate.m  的  application: didFinishLaunchingWithOptions:方法中创建快捷item,

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 2     // Override point for customization after application launch.
 3
 4     // 创建只有标题的item
 5     UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"type1" localizedTitle:@"标题1"];
 6     // 创建有标题,且有副标题的item
 7     UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"type2" localizedTitle:@"标题2" localizedSubtitle:@"副标题" icon:nil userInfo:nil];
 8
 9     // 获取icon对象(系统样式icon)
10     UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeHome];
11     // 创建有标题,有副标题,有图片(系统)的item
12     UIApplicationShortcutItem *item3 = [[UIApplicationShortcutItem alloc] initWithType:@"type3" localizedTitle:@"标题3" localizedSubtitle:@"系统图标" icon:icon userInfo:nil];
13
14     UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"feiji"];
15     // 有标题,有副标题,有图片(自定义)的item
16     UIApplicationShortcutItem *item4 = [[UIApplicationShortcutItem alloc] initWithType:@"type4" localizedTitle:@"标题4" localizedSubtitle:@"自定义icon" icon:icon2 userInfo:nil];
19     // 添加到icon快捷方式
20     [UIApplication sharedApplication].shortcutItems = @[item1,item2,item3,item4];
24     return YES;
25 }

实现方法二(修改info.plist)

 1 <key>UIApplicationShortcutItems</key>
 2     <array>
 3         <dict>
 4             <key>UIApplicationShortcutItemType</key>
 5             <string>title_one</string>
 6             <key>UIApplicationShortcutItemTitle</key>
 7             <string>标题1</string>
 8             <key>UIApplicationShortcutItemSubtitle</key>
 9             <string>副标题1</string>
10         </dict>
11         <dict>
12             <key>UIApplicationShortcutItemType</key>
13             <string>title_one</string>
14             <key>UIApplicationShortcutItemTitle</key>
15             <string>标题2</string>
16             <key>UIApplicationShortcutItemSubtitle</key>
17             <string>副标题2</string>
18             <key>UIApplicationShortcutItemIconType</key>
19             <string>UIApplicationShortcutIconTypeLove</string>
20         </dict>
21         <dict>
22             <key>UIApplicationShortcutItemType</key>
23             <string>title_one</string>
24             <key>UIApplicationShortcutItemTitle</key>
25             <string>标题3</string>
26             <key>UIApplicationShortcutItemSubtitle</key>
27             <string>副标题3</string>
28             <key>UIApplicationShortcutItemIconType</key>
29             <string>UIApplicationShortcutIconTypeLove</string>
30             <key>UIApplicationShortcutItemIconFile</key>
31             <string>feiji</string>
32         </dict>
33     </array>

点击某一个item时会调用

application:performActionForShortcutItem:completionHandler:

在在AppDelegate.m中,重写此方法。

 1 // 点击某一个item时调用
 2 - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
 3
 4     // 根据shortcutItem.type 判断点击了哪一个item
 5     if ([shortcutItem.type isEqualToString:@"type1"]) {
 6         // 做相应 操作 8     }else if ([shortcutItem.type isEqualToString:@"type2"]){10     }
11 }

2、peek and pop

这个功能是一套全新的用户交互机制,在使用3D Touch时,ViewController中会有如下三个交互阶段:

(1)提示用户这里有3D Touch的交互,会使交互控件周围模糊

(2)继续深按,会出现预览视图

(3)通过视图上的交互控件进行进一步交互

这个模块的设计可以在网址连接上进行网页的预览交互。

实现协议 UIViewControllerPreviewingDelegate

实现方法

 1 #pragma mark - UIViewControllerPreviewingDelegate
 2
 3 // peek
 4 - (nullable UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{
 5
 6
 7     // 转换坐标
 8     location = [self.tableView convertPoint:location fromView:[previewingContext sourceView]];
 9
10     // 根据location获取位置
11     NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
12
13     // 创建控制器
14     ViewController *vc = [[ViewController alloc] init];
15
16     return vc;
17
18 }
19
20 // pop
21 - (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{
22
23     // push peek 所看到的UIViewController
24     [self.navigationController pushViewController:viewControllerToCommit animated:YES];
25
26 }

注意,使用tableView实现peek和pop,需要在返回cell前这样写(调用registerForPreviewingWithDelegate:sourceView:方法)

// 告诉系统每一个cell都可以被peek

[self registerForPreviewingWithDelegate:self sourceView:cell];

这个效果的实现,在peek返回的 UIViewController 中重写 -previewActionItems 方法

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems{

    // 创建赞操作
    UIPreviewAction *item1 = [UIPreviewAction actionWithTitle:@"赞" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"赞了%@",self.httpUrl);
    }];

    UIPreviewAction *item2 = [UIPreviewAction actionWithTitle:@"评论" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"评论了%@",self.httpUrl);
    }];

    UIPreviewAction *item3 = [UIPreviewAction actionWithTitle:@"item3" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"item3");
    }];

    // 创建一个组包涵赞和评论
    UIPreviewActionGroup *group = [UIPreviewActionGroup actionGroupWithTitle:@"组" style:UIPreviewActionStyleDefault actions:@[item1,item2]];

    return @[group,item3];

}

3、Force Properties

iOS9为我们提供了一个新的交互参数:力度。我们可以检测某一交互的力度值,来做相应的交互处理。例如,我们可以通过力度来控制快进的快慢,音量增加的快慢等。

当用力按压屏幕时会调用(即使,手指不滑动)   -touchesMoved:withEvent: 方法

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

//    获取触摸对象
    UITouch *t = touches.anyObject;
    t.force // 返回按压力度值(float),实测最大值为6.6666666,最小应该是0.
}
时间: 2024-10-11 00:02:15

3DTouch相关的相关文章

Xcode7中添加3DTouch

---恢复内容开始--- 首先是插件SBShortcutMenuSimulator的安装 1.git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git 2.cd SBShortcutMenuSimulator 3.make 4.xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT

3DTouch简单了解

3D Touch的三大模块 在我们的app中使用3D Touch功能,主要分为以下三个模块: 1.Home Screen Quick Actions 通过主屏幕的应用Icon,我们可以用3D Touch呼出一个菜单,进行快速定位应用功能模块相关功能的开发.如上面的日历. 2.peek and pop 这个功能是一套全新的用户交互机制,在使用3D Touch时,ViewController中会有如下三个交互阶段: (1)提示用户这里有3D Touch的交互,会使交互控件周围模糊 (2)继续深按,会

【Windows10&nbsp;IoT开发系列】PowerShell的相关配置

原文:[Windows10 IoT开发系列]PowerShell的相关配置 可使用 Windows PowerShell 远程配置和管理任何 Windows 10 IoT 核心版设备.PowerShell 是基于任务的命令行 Shell 和脚本语言,专为进行系统管理而设计. 1.​启动 PowerShell (PS) 会话 注:若要使用装有Windows10 IoT Core设备启动PS会话,首先需要在主机电脑与设备之间创建信任关系. ​启动 Windows IoT 核心版设备后,与该设备相连的

微信小程序--图片相关问题合辑

图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.previewImage预览图片 微信小程序之预览图片 小程序开发:上传图片到腾讯云 .NET开发微信小程序-上传图片到服务器 微信小程序本地图片处理--按屏幕尺寸插入图片 [微信小程序]上传图片到阿里云OSS Python Flask小程序文件(图片)上传技巧 小程序图片上传阿里OSS使用方法 微信小程序问题汇

Android studio界面相关设置

Android studio界面相关设置 原文出自 http://www.cnblogs.com/justinzhang/p/4274839.html 用惯了emacs的操作方式,每当使用一款新的编辑器的时候,第一个想到的就是这个工具有没有emacs的快捷键,Android studio也是一样的. 1. Android studio设置emacs的方式如下,点击File->Settings 选择其中的keymap,在keymap中选择emacs,这样就成功的设置好了emacs的操作模式: 2.

25个Linux相关的网站【转】

转自:http://www.cnblogs.com/Lindaman/p/4552805.html 下面是25个最具有影响力,也是最重要的Linux网站,这些网站提供了Linux的分发包,软件,文件,新闻,以及其它所有的关于Linux的东西.关于Linux的分发包历史,可以看看本站的这篇文章<Linux Distribution Timeline> 1. Linux.org 这个站点主要提供Linux相关的新闻.文档.教程,培训,以及其它一切和Linux相关的东西.这是你需要了解Linux开源

Halcon学习之二:摄像头获取图像和相关参数

1.close_all_framegrabbers ( : : : ) 关闭所有图像采集设备. 2.close_framegrabber ( : : AcqHandle : ) 关闭Handle为AcqHandle的图像采集设备. 3.open_framegrabber ( : : Name, HorizontalResolution, VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn, Field, BitsP

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装 当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip install Scrapy 手动源码安装,比较麻烦要自己手动安装scrapy模块以及依赖模块 安装以下模块 1.lxml-3.8.0.tar.gz (XML处理库) 2.Twisted-17.5.0.tar.bz2 (用Python编写的异步网络框架) 3.Scrapy-1.4.0.tar.gz

记5.28大促压测的性能优化&mdash;线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得这个还是比较有意思的,值得总结拿出来分享下. 博主所服务的部门是作为公共业务平台,公共业务平台支持上层所有业务系统(2C.UGC.直播等).平台中核心之一的就是订单域相关服务,下单服务.查单服务.支付回调服务,当然结算页暂时还是我们负责,结算页负责承上启下进行下单.结算.跳支付中心.每次业务方进行大促期间平台都要进行一次常规压测,做到心里