3D Touch

Android原生Launcher3伪3D Touch分析 本文基于Android8.0上的原生Launcher3,分析了Android桌面的伪3D Touch实现。 阅读详情

新的触摸体验——iOS9的3D Touch

一、引言

    在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互。

二、在模拟器上学习和测试3D Touch

·3D Touch是一个很新颖的设计,可是苹果文档有言:

但是3DTouch在模拟器上是无法演示使用,只能在真机设备上
不过git上有有一个插件是可以解决在模拟器上演示3D Touch功能,具体的操作如下
1.git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git
1. cd SBShortcutMenuSimulator
2. make

  1. ` 1. xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard –environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib
  2. xcrun simctl spawn booted launchctl stop com.apple.SpringBoard
    如果没有报错,我们可以通过向指定端口发送消息的方法来在模拟器上模拟3D Touch的效果:
    echo ‘com.apple.mobilecal’ | nc 127.0.0.1 8000`

其中,com.apple.mobilecal是应用的Bundle ID ,如果要测试我们的应用,将其改为我们应用的BundleID即可,上面的示例应用是系统日历,可以看到模拟器的效果如下:
这里写图片描述

3D Touch的主要应用

    第一部分的应用是我们可以通过3D手势,在主屏幕上的应用Icon处,直接进入应用的响应功能模块。这个功能就例如我们上面的日历示例,会在Icon旁边出现一个菜单,点击菜单我们可以进入相应的功能单元。

    我个人理解,这个功能,push消息功能加上iOS8推出的扩展today功能,这三个机制使iOS应用变得无比灵活方便,用户可以不需付出寻找的时间成本来快速使用自己需要的功能。

    第二部分是对app的一个优化,用户可以通过3D Touch手势在view上来预览一些预加载信息,这样的设计可以使app更加简洁大方,交互性也更强。

3D Touch的三大模块

在我们的app中使用3D Touch功能,主要分为以下三个模块:

1、Home Screen Quick Actions

    通过主屏幕的应用Icon,我们可以用3D Touch呼出一个菜单,进行快速定位应用功能模块相关功能的开发。如上面的日历。

2、peek and pop

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

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

这里写图片描述
(2)继续深按,会出现预览视图
这里写图片描述
这个模块的设计可以在网址连接上进行网页的预览交互。
3.Force Properties

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

五、Home Screen Quick Action使用与相关api详解

iOS9为我们提供了两种屏幕标签,分别是静态标签和动态标签。

1、静态标签

静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。

我们先来看静态标签的配置:

首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去)
这里写图片描述
先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:

必填项(下面两个键值是必须设置的):

UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串

UIApplicationShortcutItemTitle 这个键值设置标签的标题

选填项(下面这些键值不是必须设置的):

UIApplicationShortcutItemSubtitle 设置标签的副标题

UIApplicationShortcutItemIconType 设置标签Icon类型

UIApplicationShortcutItemIconFile 设置标签的Icon文件

UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)

我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:
这里写图片描述

2、动态标签

动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:

UIApplicationShortcutItem 创建3DTouch标签的类

UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类

UIApplicationShortcutIcon 创建标签中图片Icon的类

因为这些类是iOS9中新增加的类,所以其api的复杂程度并不大,下面我们来对其中方法与属性进行简要讲解:

@interface UIApplicationShortcutItem : NSObject <NSCopying, NSMutableCopying>
//下面是两个初始化方法 通过设置type,title等属性来创建一个标签,这里的icon是UIApplicationShortcutIcon对象,我们后面再说
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle;
//下面这是一些只读的属性,获取相应的属性值
@property (nonatomic, copy, readonly) NSString *type;
@property (nonatomic, copy, readonly) NSString *localizedTitle;
@property (nullable, nonatomic, copy, readonly) NSString *localizedSubtitle;
@property (nullable, nonatomic, copy, readonly) UIApplicationShortcutIcon *icon;
@property (nullable, nonatomic, copy, readonly) NSDictionary<NSString *, id <NSSecureCoding>> *userInfo;

//这个类继承于 UIApplicationShortcutItem,创建的标签可变
@interface UIMutableApplicationShortcutItem : UIApplicationShortcutItem
@property (nonatomic, copy) NSString *type;
@property (nonatomic, copy) NSString *localizedTitle;
@property (nullable, nonatomic, copy) NSString *localizedSubtitle;
@property (nullable, nonatomic, copy) UIApplicationShortcutIcon *icon;
@property (nullable, nonatomic, copy) NSDictionary<NSString *, id <NSSecureCoding>> *userInfo;

@end

//这个类创建标签中的icon
@interface UIApplicationShortcutIcon : NSObject <NSCopying>
//创建系统风格的icon
+ (instancetype)iconWithType:(UIApplicationShortcutIconType)type;
//创建自定义的图片icon
+ (instancetype)iconWithTemplateImageName:(NSString *)templateImageName;
@end

创建好标签后,将其添加如application的hortcutItems数组中即可,示例如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //创建
    UIApplicationShortcutItem * item = [[UIApplicationShortcutItem alloc]initWithType:@"two" localizedTitle:@"第二个标签" localizedSubtitle:@"看我哦" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay] userInfo:nil];
    添加
    [UIApplication sharedApplication].shortcutItems = @[item];

效果如下:

这里写图片描述

这里,将系统风格icon的枚举列举如下:

typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {
    UIApplicationShortcutIconTypeCompose,//编辑的图标
    UIApplicationShortcutIconTypePlay,//播放图标
    UIApplicationShortcutIconTypePause,//暂停图标
    UIApplicationShortcutIconTypeAdd,//添加图标
    UIApplicationShortcutIconTypeLocation,//定位图标
    UIApplicationShortcutIconTypeSearch,//搜索图标
    UIApplicationShortcutIconTypeShare//分享图标
} NS_ENUM_AVAILABLE_IOS(9_0);

3、响应标签的行为

类似推送,当我们点击标签进入应用程序时,也可以进行一些操作,我们可以看到,在applocation中增加了这样一个方法:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0);

当我们通过标签进入app时,就会在appdelegate中调用这样一个回调,我们可以获取shortcutItem的信息进行相关逻辑操作。

这里有一点需要注意:我们在app的入口函数:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

也需要进行一下判断,在launchOptions中有UIApplicationLaunchOptionsShortcutItemKey这样一个键,通过它,我们可以区别是否是从标签进入的app,如果是则处理结束逻辑后,返回NO,防止处理逻辑被反复回调。

几点注意:

1、快捷标签最多可以创建四个,包括静态的和动态的。

2、每个标签的题目和icon最多两行,多出的会用…省略

关于3D Touch从app图标快速入口篇. 经过最近几天的研究,本人已经做出了一套快速入口的小demo,并且可以让模拟器进行3D Touch的快速入口效果. 一: 让模拟器可以测试3D Touch的快速入口效果步骤(本人也是在github上发现的方法,再次总结一下):  模拟器测试3D Touch的方法  1. 打开终端  2. git clone https://github.com/DeskConnect/SBSho 阅读详情

相关推荐

基于Swift的3D Touch技术应用实战:3DTouchScale开发全解析

在实际开发中,应对不同类型采取差异化策略:.down.up:适用于媒体控制类应用,映射为音量调节。.click:开启悬浮预览窗口,延迟加载内容。.pop:执行主导航动作,推入新页面。.deepPress:显示上下文菜单或确认对话框。建议采用策略模式组织处理逻辑:通过解耦处理逻辑,提升代码可维护性与测试便利性。(注:由于篇幅限制,此处仅展示前两个二级章节的完整内容。

weixin_42584758的博客 1012

3D touch的使用

使用3D touch的时候,你可以选择以静态的方式创建快捷方式(直接在info.plist中添加显示项),也可以创建动态的快捷方式,以动态方式创建的快捷方式,可以改变它的标题,子标题,和按钮图标。

王素燕 802

Axure RP 10表单数据提交制作

本文介绍了如何使用Axure RP 10实现表单数据提交。

Peppaaa的博客 990

3D Touch swift 版本

OSX 10.10.5 (14F27) XCODE Version 7.1.1 (7B1005) swift -version --->Apple Swift version 2.1 (swiftlang-700.1.101.6 clang-700.1.76) AppDelegate.swift: // // AppDelegate.swift // 3DTouchDemo /

Johnson的专栏 732

5分钟搞定PettingZoo多智能体环境搭建:从安装到运行第一个Demo

本文详细介绍了如何在5分钟内完成PettingZoo多智能体环境的搭建,从安装到运行第一个Demo。通过精准的版本控制和常见问题解决方案,帮助开发者快速上手多智能体强化学习(MARL)环境配置,并提供了实战案例和性能优化技巧。

backprop5master的博客 221

Oracle 19c RAC安装踩坑实录:OpenSSH 8.x版本与OUI的“兼容性战争”及一劳永逸的解决思路

本文深入解析Oracle 19c RAC在Linux8环境中部署时遇到的OpenSSH 8.x版本兼容性问题,特别是[INS-06006]错误的根源与解决方案。从协议层分析冲突本质,提供SCP包装器技术、官方补丁应用指南及现代化部署体系构建三种解决方案,帮助企业高效完成RAC安装并规避类似问题。

weixin_42648844的博客 458

iOS 3D Touch开发tableview页面内的使用

上一次写了3DTouch在app icon的使用,时间隔了那么久,其实我早就写完了····就是一直忙着没时间 发表文章分享,也是对不住了~ 这篇文章讲的是3DTouch在页面内的使用  首先声明  childVC(3DTOUCH 的页面) @interface ViewController () { UITableView * table; NSArray * array;

伪随机的张三 2442

“开宝五子棋陪练”-首款开放智能的五子棋习题练习安卓应用

使用Kotlin语言以及Jetpack Compose UI库开发,主要就是写Composable函数,显示棋盘、棋子和一些按钮,响应用户的点击和滑动操作,以及保存和恢复数据。但我针对本应用是用于做题的特殊需求,对该算法库做了一个简单的JNI层封装,方便UI前端Kotlin代码的调用。

weixin_44120030的博客 2397

3D Touch是什么?

3D Touch是什么 3D Touch介绍 转载地址:http://www.pc6.com/edu/84041.html 这是苹果在2015年秋季发布会上发布了iPhone 6S的新功能,除了类似Apple Watch、MacBook触摸板的标准、深压体验之外,iPhone 6s的触摸屏还将新增一种新层次的维度,实现更多操作体验。   3D Touch的功能很强大,轻点电话

1393

Diffusion、VAE与GAN:三大生成模型的原理对比与应用场景解析

本文深入解析了Diffusion、VAE与GAN三大生成模型的核心原理与特性。Diffusion模型通过逆向去噪过程实现高质量图像生成,但计算成本较高;VAE擅长学习概率潜空间,训练稳定但图像偏模糊;GAN通过对抗训练生成锐利图像,但存在模式崩溃风险。文章结合实战场景,为图像生成、修复、超分辨率等任务提供了清晰的模型选择指南。

weixin_29063979的博客 344

RK806S PMIC电源管理芯片调试

当点按PWRON按键时,rk806上电开始启动bootloader和uboot,在执行到此处时检测到是由于按键启动的,所以0x5d的值是0x80,0x74的值是0x80,在一般情况下,mode都默认是none的,所以mode值为11,因此就进入了我们的if判断,若是由于按键启动的,则直接调用rk8xx_shutdown函数关掉,进入这个函数会看到实际是通过i2c给0x72寄存器的BIT(0)写1,使其关机。当SoC在12V电源已经接入,且处于关机状态时,使用PWRON按键开机,0x74的值则为0x80。

Y1anoohh的博客 2545

android 简单模仿IOS的3D Touch功能

个人对IOS端3D Touch功能很感兴趣,想来自己实现,上网一搜,这类文章并不是很多,于是想自己实现一个。在自己绞尽脑汁的时候在github上搜索到一个开源项目可以实现简单3D Touch功能,在此坐一下笔记,以供后续参考。

路漫漫其修远兮,吾将上下而求索 2132

【即插即用模块】注意力篇 | ECCV 2024 | DPB:高低频动态分离+双提示融合,PSNR直冲40+!

本文提出了一种基于频率提示的图像恢复方法FPro,通过动态滤波器分离输入特征的高低频分量,并采用双提示块(DPB)进行频域专属提示生成与调制。DPB包含低频提示调制器(LPM)和高频提示调制器(HPM),分别处理不同频段信号,通过生成提示组件并融合解码器特征来优化恢复效果。实验表明,该方法在U型结构中表现优异,尤其适用于分割、底层视觉和多模态任务。模块通过动态无监督频率分离、频域专属提示生成和适配性融合机制,有效解决了传统方法对频域信息关注不足的问题,显著提升了图像恢复质量。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 147

iOS开发 3D-touch使用

3D Touch的触控技术,被苹果称为新一代多点触控技术。3D Touch,苹果iPhone 6s的新功能,看起来类似 PC 上的右键。有Peek Pop 两种新手势。iOS 9提供了如下3D Touch APIs: Home Screen quick action API,使你可以给应用图标添加快速选项,从而让应用预料和加速其与APP的交互。UIKit peek a

FY_Fish的专栏 831

网络分析工具Wireshark系列专栏:01-专栏导读

随着人工智能技术的普及,越来越多的博主开始利用AI进行内容创作,导致优快云等平台上充斥着大量低质量的洗稿文章,严重影响了技术软文的质量和可信度。为了应对这一现象,提升技术内容的质量,瑞哥决定推出系列技术专栏,为大家带来系统、深入且高质量的技术学习资源。这些专栏将帮助读者从入门到精通,特别适合习惯通过文档学习的技术爱好者。作为首个专栏,我们将聚焦于Wireshark——一款广受欢迎的网络协议分析工具。根据优快云后台的反馈,许多读者表示Wireshark是他们欠缺的一项技能。因此,本专栏将通过精心设计的课程

网络技术联盟站 359

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

iOS 3D Touch 简述

首先 有几个要知道的手势 第一, 在点击app icon 的手长按 并且用力一点(用点力不然没效果,不会弄坏手机,坏了也不是我的,哈哈!) 就会出现 几个Item。 第二,(1)在app 里面 长按 也要用力往下压 跟着就会可以弹出 自定义的 ViewController。这个时候如果你放...

chuangnizhen0989的博客 163

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

关于3D touch 一些简单实用

一、  3D touch简单使用,一般开发用到两种情况      1、在app图标上使用3D Touch;      2、在程序内使用3D Touch;            现在说一下第一种在app图标上使用3D Touch      这个一般也有两种方法去实现它         1)首先可以在info.plist 里面添加一些key在里面进行添加items

u014365593的博客 334

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ios touch坐标_iOS 3D Touch –窥视与流行

ios touch坐标In this tutorial, we’ll be discussing and implementing the 3D Touch functionality in our iOS Application. 在本教程中,我们将在iOS应用程序中讨论和实现3D Touch功能。 窥视与流行 (Peek and Pop) Peek and Pop is a functio...

从零开始的教程世界 225

iOS技术总结1——3D Touch技术

简介 3D Touch是iPhone 6s+,iOS9之后新增的功能。是一种立体触控技术,被苹果称为新一代多点触控技术,在Apple Watch上体现为采用了Force Touch,屏幕可感知不同的感压力度触控。有peek和pop两种新手势。3D-Touch技术相对于多点触摸在平面二维空间的操作,增加了对力度和手指面积的感知,其最大的好处在于不启动app的情况下,可以通过长按快速预览/查看你想要的...

baicai_520的专栏 490

iPhone 神级功能,3D Touch 回归!!!

摘要:3DTouch曾是iPhone的"神级功能",通过压力感应实现分层操作,在称重和游戏中有独特体验。苹果2018年后取消该功能改用HapticTouch,虽降低成本但牺牲了体验。最新专利显示苹果可能研发光学压力检测技术,有望使3DTouch以新形式回归。这项技术可检测触摸位置、力度等多维信息,或应用于未来iPhone及AR/VR设备。

m0_55795221的博客 1872

Chai3d 及 Geomagic Touch配置

系统: Win 7 - 64 bit Visual Studio 2017 Chai3d 3.2.0 在使用 Chai3d 时,需要 (1) hdPhantom64.dll (2)在工程中需要预处理器定义 WIN64 原因:(1)当没有hdPhantom64.dll 时,工程编译/执行不会有任何错误,但会提示 no device found (2)如果没有预定义 WIN64,则生成时选择导入...

wg_hou的博客 3268

iOS 检查手机的3D Touch是否可用

代码:   if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {        } 不能使用判断手机是否为6S或6SP,因为如果用户在设置 -> 通用 -> 3D Touch中将该功能关闭的话,同样forceTouch是不可用的. 而且此功能必须在运行时随时检查.因为用户

soindy 4906

3D Touch入门

在iOS 9中,新iPhone将第三维度添加到了用户界面。 用户现在可以用力摁下主屏按钮来快速调出应用提供的功能菜单。 在应用中,用户现在可以用力摁下视图以查看更多内容的预览并且快速访问一些功能。 想查阅示例代码的话,可以下载下面的Xcode工程: ApplicationShortcuts: Using UIApplicationShortc

风随花落的博客 551
上一篇: ios 手势
下一篇: sqlite3数据库的使用
chenqiangblogs
博客等级 码龄11年 19粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值