[iOS]iOS9 3DTouch、ShortcutItem、P

作者: 肖浩呗 | 来源:发表于2015-09-10 06:59 被阅读18931次

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”];
获取当前应用程序的shortcutItems
  //获取当前应用程序对象  
  UIApplication *app = [UIApplication sharedApplication];  
  //获取一个应用程序对象的shortcutItem列表  
  id existingShortcutItems = [app shortcutItems];
重置当前应用程序的shortcutItems
  //根据旧的shortcutItems生成可变shortcutItems数组  
  id updatedShortcutItems = [existingShortcutItems mutableCopy];  
  //修改可变shortcutItems数组中对应index下的元素为新的shortcutItem  
  [updatedShortcutItems replaceObjectAtIndex: 0 withObject: mutableItem];  
  //修改应用程序对象的shortcutItems为新的数组  
  [app setShortcutItems: updatedShortcutItems];
创建一个新的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
代理对象实现协议内的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
注册方法声明在UIViewController类内
[self registerForPreviewingWithDelegate:self sourceView:self.view];

相关文章

  • [iOS]iOS9 3DTouch、ShortcutItem、P

    3DTouch UITouch类里API的变化 iOS9中添加的属性 altitudeAngle 当笔平行于平面时...

  • 3DTouch 使用

    iOS9之后使用3DTouch 3DTouch功能主要分为两大块:主屏幕Icon上的Quick Action;Pe...

  • 详解3DTouch的使用

    3DTouch的简单使用. 介绍 3DTouch是iOS9的时候出来,对硬件也有要求,也就是说只有iPhone6s...

  • iOS APP开发添加3D Touch

    本文就iOS开发中如何集成3DTouch做下简单的讲解。 开发环境及调试设备:Xcode7或以上,iOS9或以上,...

  • Swift开发之3DTouch实用演练

    Swift开发之3DTouch实用演练 2015年,苹果发布了iOS9以及iphone6s/iphone6s Pl...

  • 3D Touch功能

    一、功能介绍: 开发环境及调试设备:Xcode7或以上,iOS9或以上,iPhone6s或以上3DTouch功能主...

  • iOS开发3DTouch功能的实现

    开发环境及调试设备支持: Xcode7或以上,iOS9或以上,iPhone6s或以上 3DTouch功能主要分为两...

  • iOS开发 实现3DTouch

    1.添加3DTouch (我是自己封装的 只是在app 启动的时候吊起) 1.1判断是不是可以使用(ios9 之前...

  • iOS9 3DTouch

    在info.plist中添加如下代码: 解释: UIApplicationShortcutItemUserInfo...

  • iOS 3DTouch

    3DTouch是苹果在2015年,iPhone 6s、iOS9之后新推出的新功能。有Peek和Pop两种新手势。有...

网友评论

  • Snow_L:为什么我的shortcutItems 的个数最多只能设置4个 楼主能帮我解惑一下吗
  • 施主小欣:请问楼主大大~ 3dtouch 写好后 那个系统分享应该怎样去做呢?
  • dedenc:你好 我在使用了你说的这个peek and pop实现跳转页面的时候,在跳到了一个viewcontroller之后,他的顶部的navigationController消失了 我并没有设置隐藏之类的 请问你有没有遇到过
    天空中不变的星:push过去应该可以
  • 仰望星空之Rocky:icon:UIApplicationShortcutIcon 我看你截图icon在左边,,我做的在右边,,需要做什么设置吗?3Q
    charlotte2018:@ZinkLin 我还纳闷了,怎么跟微信的不一样,回答的好。谢谢
    ZinkLin:@wwwang icon 在左边或者右边,这个是跟你的app 放在你手机的里面的位置有关系,你试试把APP移到屏幕左边,icon就跑到左边去了
  • 清眸如画:有什么模拟器可以测试吗
    lunaSun:@约定一生 自带模拟器就可以模拟
    mf168:@约定一生 https://github.com/DeskConnect/SBShortcutMenuSimulator
  • 爱丶不失手:3DTouch----mark
  • 大眼萌璇璇:onLaunchOptionsShortcutItemKey是否为空
    当不为空时,application:didFinishLaunchWithOptions方法返回false,否则返回true。 请问返回false和true的区别是什么
  • 大眼萌璇璇:onLaunchOptionsShortcutItemKey是否为空
    当不为空时,application:didFinishLaunchWithOptions方法返回false,否则返回true。 请问返回false 和 true的区别是什么
  • 45ccff1aca65: 用静态方法在info.plist里面配置 怎么做本地化呢
  • 夜之海澜:楼主,我在plist文件里边设置UIApplicationShortcutItemIconFile 想用自己的图片,但是一直显示不出来,这个对图片有什么特殊要求嘛?比如大小?放置位置之类的?
  • 0x0F:请问您这个有demo可以看吗
    半尺尘:@riseup 要6s或者6s plus才支持3D Touch噢
    1f0f77826518:@半尺尘 怎么没反应
    半尺尘:@Manloff 你好,我参考作者的文章和其他资料,做了一个Demo,链接:https://github.com/banchichen/3DTouch-PeekAndPopGestureDemo.git。如果感觉有用可以给个star~ :smile:
  • 7a9468fd08eb:有个问题,如果我只通过动态方法给应用添加了 shortitems,是不是在没有启动过app之前,shortitemsmenu是启动不起来的?
    半尺尘:@肖浩呗 你好,我发现,微信,支付宝等应用,未打开情况下shortItems也起作用,这是什么原因呢?
    肖浩呗:@CP0000 是的,因为配置代码还没有执行
    c49f19c51208:@CP0000 实测 是这样的

本文标题:[iOS]iOS9 3DTouch、ShortcutItem、P

本文链接:https://www.haomeiwen.com/subject/zfdpcttx.html