iOS 3D touch

3DTouch



UITouch类里API的变化

iOS9中添加的属性

altitudeAngle

  • 当笔平行于平面时,该值为0
  • 当笔垂直于平面时,该值为Pi / 2

estimatedProperties

  • 当前触摸对象估计的触摸特性
  • 返回值是UITouchPropertyies

updatedProperties

  • 当前触摸对象已经更新的触摸特性
  • 返回值是UITouchPropertyies

estimationUpdateIndex

  • 当每个触摸对象的触摸特性发生变化时,该值将会单独增加
  • 返回值是NSNumber

iOS9中添加的方法

  • PreciseLocationInView:
  • 当前触摸对象的坐标
  • PrecisePreviousLocationInView:
  • 当前触摸对象的前置坐标
  • azimuthAngleInview:
  • 沿着x轴正向的方位角
  • 当与x轴正向方向相同时,该值为0
  • 当view参数为nil时,默认为keyWindow
  • azimuthUnitVectorInView:
  • 当前触摸对象的方向上的单位向量
  • 当view参数为nil时,默认为keyWindow

UIForceTouchCapability

UIForceTouchCapabilityUnknown

  • 不能确定是否支持压力感应

UIForceTouchCapabilityUnavailable

  • 不能支持压力感应

UIForceTouchCapabilityAvailable

  • 可以支持压力感应

UITouchType

UITouchTypeDirect

  • 垂直的触摸类型

UITouchTypeIndirect

  • 非初值的触摸类型

UITouchTypeStylus

  • 水平的触摸类型

UITouchProperties

UITouchPropertyForce


ShortcutItem



静态方式

  • 打开Info.plist文件
  • 在对应UIApplicationShortcutItems关键字下添加item

动态方式

修改当前应用程序的某个shortcutItem

  //获取第0个shortcutItem
  id oldItem = [existingShortcutItems objectAtIndex: 0];
  //将旧的shortcutItem改变为可修改类型shortcutItem
  id mutableItem = [oldItem mutableCopy];
  //修改shortcutItem的显示标题
  [mutableItem setLocalizedTitle: @"Click Lewis"];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

获取当前应用程序的shortcutItems

  //获取当前应用程序对象
  UIApplication *app = [UIApplication sharedApplication];
  //获取一个应用程序对象的shortcutItem列表
  id existingShortcutItems = [app shortcutItems];
  • 1
  • 2
  • 3
  • 4

重置当前应用程序的shortcutItems

  //根据旧的shortcutItems生成可变shortcutItems数组
  id updatedShortcutItems = [existingShortcutItems mutableCopy];
  //修改可变shortcutItems数组中对应index下的元素为新的shortcutItem
  [updatedShortcutItems replaceObjectAtIndex: 0 withObject: mutableItem];
  //修改应用程序对象的shortcutItems为新的数组
  [app setShortcutItems: updatedShortcutItems];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建一个新的UIApplicationShortcutItem

  • 初始化函数

    • -initWithType:localizedTitle:localizedSubtitle:icon:userInfo:
    • -initWithType:localizedTitle:
  • 属性
    • localizedTitle:NSString
    • -localizedSubtitle:NSString
    • -type:NSString
    • -icon:UIApplicationShortcutIcon
    • -userInfo:NSDictionary
    • 只有只读特性,想要进行修改时,需要通过mutableCopy方法转变为
      NSMutableApplicationShortcutItem

创建一个新的Item图标

  • 初始化函数

    • +iconWithType:
    • +iconWithTemplateImageName:
    • +iconWithContact:

当程序启动时

  • 判断launchOptions字典内的UIApplicationLaunchOptionsShortcutItemKey是否为空
  • 当不为空时,application:didFinishLaunchWithOptions方法返回false,否则返回true
  • 在application:performActionForShortcutItem:completionHandler方法内处理点击事件

Peek and Pop



注册预览功能的代理对象和源视图

代理对象需要接受UIViewControllerPreviewingDelegate协议

  @interface RootVC<UIViewControllerPreviewingDelegate>
  {}
  @end
  • 1
  • 2
  • 3

代理对象实现协议内的Peek和Pop方法

  @implementation RootVC
  - (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)context viewControllerForLocation:(CGPoint) point
  {
      UIViewController *childVC = [[UIViewController alloc] init];
      childVC.preferredContentSize = CGSizeMake(0.0f,300f);  

      CGRect rect = CGRectMake(10, point.y - 10, self.view.frame.size.width - 20,20);
      context.sourceRect = rect;
      return childVC;
  }
  - (void)previewContext:(id<UIViewControllerPreviewing>)context commitViewController:(UIViewController*)vc
  {
      [self showViewController:vc sender:self];
  }
  @end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

注册方法声明在UIViewController类内

[self registerForPreviewingWithDelegate:self sourceView:self.view];
  • 1

转载地址:http://www.jianshu.com/p/74fe6cbc542b

时间: 2024-08-10 23:20:25

iOS 3D touch的相关文章

iOS 3d touch设计的秘密

相信很多苹果的用户对这个3d touch这个功能都不是很了解,而苹果设备上的这个交互设计主要是给用户带来更多的互动维度.那苹果公司为啥要这个交互功能,那我们首先来解析一下这个设计的用法:在支持的设备上,人们可以通过按压主屏幕应用程序的图标快速选择特定的操作.在应用程序中,人们可以使用压力来获得项目的预览,可以在一个单独的视图中打开该项目,并获得相关的操作. Peek和PopPeek可以让用户在没有打开应用的情况下预览的应用所支持的快捷操作.轻压有支持Peek的应用图标可以显示一个矩形的Pop视图

iOS 3D Touch功能

新的触摸体验--iOS9的3D Touch 一.引言 在iphone6s问世之后,很多果粉都争先要体验3D Touch给用户带来的额外维度上的交互,这个设计之所以叫做3D Touch,其原理上是增加了一个压力的感触,通过区分轻按和重按来进行不同的用户交互. 二.在模拟器上学习和测试3D Touch 3D Touch 是一个很新颖的设计,可是苹果文档有言: With Xcode 7.0 you must develop on a device that supports 3D Touch. Sim

关于iOS 3D touch 指纹验证的随笔

file:///Users/OWen/Desktop/3DTouch.png 随着iOS系统不断的更新迭代,苹果总会推出一些新的功能,今天就研究了一下iOS8之后推出的指纹验证的功能,然后写了一个小demo,与君分享.. 上demo:   1:首先导入一个系统的库文件      #import <LocalAuthentication/LocalAuthentication.h> 2: LAContext *mycontent = [[LAContext alloc] init]; NSStr

iOS 3D touch的实现 从零开始

[key]UIApplicationShortcutItems[/key]     [array]         [dict]             [key]UIApplicationShortcutItemIconType[/key]             [string]UIApplicationShortcutIconTypeShare[/string] //图片类型,枚举             [key]UIApplicationShortcutItemTitle[/key]

《iOS Human Interface Guidelines》——3D Touch

3D Touch 3D Touch让iOS 9的用户多了一个交互的维度.在支持的设备上,人们可以通过按压主屏幕上的app图标来快速地选择其特有的操作.在app内,人们可以使用多种压力来获取一个内容的预览.在另一个视图打开内容以及获取相关的操作.(查看Adopting 3D Touch on iPhone来学习更多关于在你的代码中支持3D Touch的内容.) Peek 和 Pop Peek让用户可以在不离开当前环境的情况下预览一个内容以及执行相关的操作.元素通过在轻按时显示一个小的矩形视图(有时

iOS开发--3D Touch的基本使用

1.桌面快捷菜单项 效果如图: 桌面快捷菜单 点击之后的效果如图: 点击桌面快捷菜单的效果 接下来看下具体实现:1).在-application:didFinishLaunchingWithOptions:方法中用-setShortcutItems:方法来添加快捷菜单项. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //

iOS 9之3D Touch

金田 北京时间9月10日凌晨, Apple在美国旧金山比尔格拉汉姆公民大礼堂(Bill Graham Civic Auditorium)召开新品发布会.本次着重介绍了3D Touch功能, 大体介绍一下: - 增强版的Force Touch(压力触控)技术,Force Touch之前被应用在于Apple Watch - 根据力度的不同,从而带来更多样化的用户体验.比如,用力按快进按钮会使快进的速度更快.用力度触摸代替了长按拖拽选项.用力按屏幕时用户可以自行调节应用界面等 - 在点击.滑动.缩放的

IOS 实现3D Touch在tableView的简单应用(swift版)

之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也弄个swift版的3D Touoch... 上代码. 一.3D Touch重按主屏icon出现快捷标签有两种添加方式: 1.静态添加,在工程中的info.plist文件中添加,这种方式添加的标签安装后就能显示 2.动态添加,通过代码动态添加快速入口.这种方式添加的标签,必须先运行一次App才会出现. func application(application: UIApplication, didFinishLaunch

iOS开发之 3D Touch 开发

在App 的开发中对于开发人员来说新设备以及新功能的适配无疑是一个很苦逼的事.在今年九月份iPhone 6S 以及 6S+ 出来之后,新的功能 3D Touch又是一个比较头疼的事.刚刚看到的时候以为是比较麻烦的东西 看着开发文档就头大(本撸主英语水平有限).但是看完官方文档之后感觉也不是很麻烦.所以就自己写了一个Demo 供大家吐槽和狂喷. 我感觉  3D Touch  的使用和  UITabBar  差不多还是一个比较简单的东西,几乎是拿过来就能用的东西. 一. 给桌面 Icon 添加 3D