3d ios touch 开发_sencha touch ios - CSDN
  • 3D Touch,苹果iPhone 6s的新功能。有Quick Actions以及Peek Pop 两种新手势,Peek专注于预览,Pop可以全面展现内容。

    3D Touch,苹果iPhone 6s的新功能。有Quick Actions以及Peek Pop 两种新手势,Peek专注于预览,Pop可以全面展现内容。

    一、Quick Actions

    1、设置重按图标显示的操作, AppDelegate中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中执行:

        // 拍照 UIApplicationShortcutIcon 设置icon
        UIApplicationShortcutIcon *iconCamera = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCapturePhoto];
        // UIMutableApplicationShortcutItem 设置标题和type(可以作为一种标识)
        UIMutableApplicationShortcutItem *itemCamera = [[UIMutableApplicationShortcutItem alloc] initWithType:@"camera" localizedTitle:@"拍照"];
        
        itemCamera.icon = iconCamera;
        
        // 相册
        UIApplicationShortcutIcon *iconPhotoLibrary = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeLove];
        UIMutableApplicationShortcutItem *itemPhotoLibrary = [[UIMutableApplicationShortcutItem alloc] initWithType:@"photoLibrary" localizedTitle:@"相册"];
        
        itemPhotoLibrary.icon = iconPhotoLibrary;
        
        // 设置自定义图片的icon
    //    NSDictionary *userInfo1 = @{@"key":@"example"};
        UIApplicationShortcutIcon *exampleIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"imageName"];
        UIMutableApplicationShortcutItem *exampleItem = [[UIMutableApplicationShortcutItem alloc] initWithType:@"example" localizedTitle:@"大标题" localizedSubtitle:@"小标题" icon:exampleIcon userInfo:nil]; // 分大标题和小标题
        
        application.shortcutItems = @[itemCamera, itemPhotoLibrary, exampleItem];
    
    2、在AppDelegate.m中实现下面方法:

    // 自己实现下面方法
    - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
    {
        // 根据type响应每个按钮的结果。
        if ([shortcutItem.type isEqualToString:@"camera"]) {
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.allowsEditing = YES;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [self.window.rootViewController presentViewController:picker animated:YES completion:nil];
        }
        
        if ([shortcutItem.type isEqualToString:@"photoLibrary"]) {
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.allowsEditing = YES;
            picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            [self.window.rootViewController presentViewController:picker animated:YES completion:nil];
        }
        
        if ([shortcutItem.type isEqualToString:@"example"]) {
            NSLog(@"example");
        }
    }
    



    二、Peek和Pop

    1、首先在需要进行3DTouch的类中遵守协议:UIViewControllerPreviewingDelegate

    2、注册代理:

    // 3DTouch
    -(void)registerPreview
    {
        // 判断:如果如果支持3DTouch就进行注册代理
        if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
            // sourceView是支持3DTouch的区域,即能感知力度的区域
            [self registerForPreviewingWithDelegate:self sourceView:self.view];
        }
        else {
    //        NSLog(@"该设备不支持3D-Touch");
        }
    }
    
    3、实现代理方法
    // 稍重点击的时候调用 peek
    // previewingContext:预览内容   location:是按压的位置
    - (UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
    {
        // 创建预览的控制器或者视图
        SecondViewController *vc = [[SecondViewController alloc] init];
        // 预览内容的区域,(0, 0)为默认区域
        vc.preferredContentSize = CGSizeMake(0, 0);
        // 轻点后在sourceRect范围外的区域变模糊
        previewingContext.sourceRect = self.btn.frame;
    
        return vc;
    }
    
    // 加重按调用
    - (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
    {
        // 在这里执行加重按后的代码
        [self showViewController:viewControllerToCommit sender:self];
    }
    
    4、设置目的控制器(即预览的控制器)下面可以点击的操作(如复制、点赞等):

    // 预览下面的按钮,这里是一个数组,可以设置多个action,会有多个操作。
    - (NSArray<id<UIPreviewActionItem>> *)previewActionItems
    {
        return @[
                 [UIPreviewAction actionWithTitle:@"请点击我" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
                     NSLog(@"你点到我了");
                 }]];
    }
    


    demo地址:https://github.com/sweetday/3DTouch.git

















    展开全文
  • 之前一直在忙着维护项目,偶然的一天闲着玩手机玩到3Dtouch,看着效果挺不错的 于是就尝试着搜索了一下相关的文案,结果除了官网给的全英文api意外国内的基本都 是互相抄袭,我搜了37篇文章,29篇相似度惊人,而且仅...

    之前一直在忙着维护项目,偶然的一天闲着玩手机玩到3Dtouch,看着效果挺不错的

    于是就尝试着搜索了一下相关的文案,结果除了官网给的全英文api以外国内的基本都

    是互相抄袭,我搜了37篇文章,29篇相似度惊人,而且仅有一个技术网的给出来如何

    利用3Dtouch跳转指定页面(还是没处理好的模态)

    那今天就来给大家看看3Dtouch的构成

    首先说说官方版本的,咱们在plist 文件里面添加,如下:


    然后编译,在6s上效果如下:


    这就弄好了~挺快的是不?但是这样的做法还是有局限性~那么我们该怎么做呢?

    接下来第二个方法:手动创建

    - (void)creatIconTouch
    {
        // set item image
        UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"QR_icon"];
        UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"search"];
        UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"refund"];
        UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"help_icon"];
        
        // create several (dynamic) shortcut items
        UIMutableApplicationShortcutItem *item = [[UIMutableApplicationShortcutItem alloc]initWithType:@"pay" localizedTitle:@"決済" localizedSubtitle:@"支付" icon:icon1 userInfo:nil];
        UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"search" localizedTitle:@"照会" localizedSubtitle:@"查询" icon:icon2 userInfo:nil];
        UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"refound" localizedTitle:@"返金" localizedSubtitle:@"退款" icon:icon3 userInfo:nil];
        UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"help" localizedTitle:@"ヘルプ" localizedSubtitle:@"帮助" icon:icon4 userInfo:nil];
        
        // add all items to an array
        NSArray *items = @[item,item1, item2, item3];
        
        // add the array to our app
        [UIApplication sharedApplication].shortcutItems = items;
    }
    
    这个方法是要放在APPdelegate里面,在didfinishlaunching里面调用就行,效果如下:

    (因为是公司项目对外的logo就不宜放出了)


    这些创建显示点击都没问题了,但发现没?点击的时候只能进去首页,那接下来大家来看看怎么调到指定页

    在iOS9.0以后appdelegat里面有专用的方法:

    #pragma mark - 3DTouch Action
    - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
        // react to shortcut item selections
        NSLog(@"点击了 %@.", shortcutItem.localizedTitle);
    }
    这就是点击事件的方法,到了这一步大家不是说不就跳转呗,写一个模态过nav push进去啊。

    no~其实每个开发者都知道,只不过在这里会迷糊,

    <span style="font-size:14px;">ViewController * VC = [[ViewController alloc]init];
        Nav = [[UINavigationController alloc]initWithRootViewController:VC];
        [self.window setRootViewController:Nav];</span>
    一般来说都这么创建的,然后你就想 self.window.rootViewController.navigationController push 这么跳转?(如果说你的整个项目是模态的话,随意你怎么模态)运行原理来说这样是行不通的,就在你添加的时候,把上面提到的nav设置成属性,按照代码执行顺序,Nav已经是你的window 的rootVC了~所以跳转的时候,如下:(记得判断你的item)

    if ([shortcutItem.localizedTitle isEqualToString:@"決済"]) {
                Payment01Controller * vc = [[Payment01Controller alloc]init];
                [Nav pushViewController:vc animated:YES];
            }

    大功告成,慢慢的玩去吧~之后我会详细的写一篇页面内的3Dtouch,敬请期待



    展开全文
  • iOS 3D Touch开发介绍

    2016-05-26 16:20:15
    它的功能默认是开启的,但用户也可以在系统设置中把它关掉(Settings > General > Accessibility > 3D Touch), 支持3D Touch的最低系统要求为 iOS 9,开发人员则需要至少使用XCode 7,目前支持3D Touch的设备只有...

    3D Touch具体功能:用力按一个图标会弹出一层半透明菜单,里面包含了该应用下的一些快捷操作。

    它的功能默认是开启的,但用户也可以在系统设置中把它关掉(Settings > General > Accessibility > 3D Touch), 支持3D Touch的最低系统要求为 iOS 9,开发人员则需要至少使用XCode 7,目前支持3D Touch的设备只有 iPhone 6s 和 iPhone 6s Plus,后期的Mac也将支持。3D Touch带有 Peek Pop 两种新手势,这里主要介绍的是 - - 快捷菜单

    关于3D Touch在工程中的配置问题

    静态标签配置:在plist文件中添加静态标签,如下项

    {  "UIApplicationShortcutItems":[
    "Item0":{
    "UIApplicationShortcutItemTitle":"标签标题(必填)",
    "UIApplicationShortcutItemType":"标签的唯一标识 (必填)",
    "UIApplicationShortcutItemIconType":"使用系统图标的类型(可选)",
    "UIApplicationShortcutItemIcon File":"使用项目中的图片作为标签图标 (可选)",
    "UIApplicationShortcutItemSubtitle":"标签副标题 (可选)",
    "UIApplicationShortcutItemUserInfo":"字典信息,如传值使用 (可选)"  }  ]  }


    动态标签配置:在工程中添加动态标签例如

        #warning  或是创建自定义图标的icon

        //    UIApplicationShortcutIcon * homeIconBySelf = [UIApplicationShortcutIcon iconWithTemplateImageName:@"自定义图片名称.png"];

        #warning 采用系统提供的icon

        UIApplicationShortcutIcon * icon = [UIApplicationShortcutIconiconWithType:(UIApplicationShortcutIconTypeHome)];

        //创建快捷选项

        UIApplicationShortcutItem * item = [[UIApplicationShortcutItemalloc]initWithType:@"com.jing.touch.home"localizedTitle:@"首页"localizedSubtitle:@"进入首页"icon:iconuserInfo:nil];

        //添加到快捷选项数组

        [UIApplicationsharedApplication].shortcutItems =@[item];

    在AppDelegate.m文件中加如下代码:


    ***github地址:https://github.com/FlyJing/3DTouchDemo.git

    展开全文
  • 3D Touch开发主要有4个方面: - 主界面快捷菜单功能 (Home screen quick action) - 预览图和重击功能( UIKit Peek and Pop) - Web view预览链接的页面(Web view peek and pop) - 检测3D Touch的相对...

    3D Touch是iOS9推出的适用于iPhone6s(Plus),包括刚出的iPhone7(Plus)以上的机型的功能。
    开发主要有4个方面:
    - 主界面快捷菜单功能 (Home screen quick action)
    - 预览图和重击功能( UIKit Peek and Pop)
    - Web view预览链接的页面(Web view peek and pop)
    - 检测3D Touch的相对压力大小(UITouch force properties)

    主界面快捷菜单功能(Home Screen Quick Actions)类似电脑右键菜单

    Quick Actions
    有一个快捷菜单类UIApplicationShortcutItem
    UIApplicationShortcutItem类有几个属性参数:
    - type 必须的,自定义的类型参数
    - localizedTitle 必须的,标题
    - localizedSubtitle 可选的,子标题
    - icon 可选的,可以用系统的或者自定义,注意自定义的图片必须有透明区域(不然图片是一片黑色),且大小有限制(35*35个点)。
    - userInfo 可选的, 该选项携带的字典数据。

    添加快捷菜单有两种方式:
    1.在info.plist添加UIApplicationShortcutItems

    <array>
        <dict>
            <key>UIApplicationShortcutItemIconType</key>
               <string>UIApplicationShortcutIconTypeSearch</string>
               <key>UIApplicationShortcutItemSubtitle</key>
               <string>shortcutSubtitle1</string>
               <key>UIApplicationShortcutItemTitle</key>
               <string>shortcutTitle1</string>
               <key>UIApplicationShortcutItemType</key>
               <string>$(PRODUCT_BUNDLE_IDENTIFIER).First</string>
               <key>UIApplicationShortcutItemUserInfo</key>
               <dict>
                 <key>firstShorcutKey1</key>
                 <string>firstShortcutKeyValue1</string>
               </dict>
        </dict>
    </array>

    2.application:didFinishLaunchingWithOptions方法后面添加给[UIApplication sharedApplication].shortcutItems赋值;

    -(void)createShortcutItems{
        //自定义图片要透明的才会有图案,不然是黑色一片
        UIApplicationShortcutItem* item1 = [self createShortcutItemWithTitle:@"拍照" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCapturePhoto]];
        UIApplicationShortcutItem* item2 = [self createShortcutItemWithTitle:@"联系人" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeContact]];
        UIApplicationShortcutItem* item3 = [self createShortcutItemWithTitle:@"美化" icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"美化"]];
        UIApplicationShortcutItem* item4 = [self createShortcutItemWithTitle:@"任务" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeTask]];
        [UIApplication sharedApplication].shortcutItems = @[item1,item2,item3,item4];
    }
    
    -(UIApplicationShortcutItem *)createShortcutItemWithTitle:(NSString *)title icon:(UIApplicationShortcutIcon *)icon{
       return [[UIApplicationShortcutItem alloc]initWithType:title
                                              localizedTitle:title
                                           localizedSubtitle:nil
                                                        icon:icon
                                                    userInfo:nil];
    }

    application:performActionForShortcutItem:completionHandler:方法里监测3D Touch菜单按钮的点击

    -(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
        NSArray<NSString *> *itemsNames = @[@"拍照", @"联系人", @"美化",@"任务"];
        NSUInteger index = [itemsNames indexOfObject:shortcutItem.localizedTitle];
        NSLog(@"%@",itemsNames[index]);
       }
    }

    注意点:
    - 自定义图片要透明的才会有图案,不然是黑色一片。
    - 如果application:didFinishLaunchingWithOptions返回NO则 application:performActionForShortcutItem:completionHandler 方法不执行。
    - APP加载完可能没有执行相应的3D Touch菜单相应的动作,可在application:performActionForShortcutItem:completionHandler等待主界面加载完再做相应的动作,简单点就延时0.1秒就可以了。
    - 如需在app 内部改变3D Touch的菜单选项,可以用UIMutableApplicationShortcutItem 类可以改变快捷菜单内容(在info.plist设置的不可改变)。

    官方swift写的3D Touch快捷菜单例子

    预览图和重击功能(Peek and Pop)

    有三个控制器:1当前控制器 2预览图控制器 3重击时跳转的控制器(也可以不实现,跳回到第一个控制器)
    在当前控制器实现代理UIViewControllerPreviewingDelegate;
    实现代理中的两个方法分别对应Peek和Pop;

    首先监测3D Touch功能是否可用 (可用的话就注册代理UIViewControllerPreviewingDelegate)

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
        if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable){
            [self registerForPreviewingWithDelegate:self sourceView:self.tableView];
        }
    }

    实现Peek预览功能

    -(UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{
        NSIndexPath* indexPath = [self.tableView indexPathForRowAtPoint:location];
        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
        self.indexPath = indexPath;
        if (!cell) {
            return nil;
        }
        previewingContext.sourceRect = cell.frame;//突出来的frame,见下图
        ZSRPreviewController *vc = [[ZSRPreviewController alloc] init];//预览图控制器
        vc.preferredContentSize = CGSizeMake(kScreenWidth, 200);
        vc.index = [indexPath row];
        return vc;
    }

    实现Pop重击功能

    -(void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{
        [self tableView:self.tableView didSelectRowAtIndexPath:self.indexPath];
    }

    Peek开始

    在预览图控制器覆盖以下方法有具体的选项功能。

    - (NSArray<id<UIPreviewActionItem>> *)previewActionItems {
        UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"确定" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
            NSLog(@"确定");
        }];
        UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"取消" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
            NSLog(@"取消");
        }];
        NSArray *actions = @[action1,action2];
        return actions;
    }

    这里写图片描述

    官方swift写的3D Touch预览图例子

    Web view预览链接的页面(Web view peek and pop)

    非常简单,只需要加上 webView.allowsLinkPreview = YES; 就可以实现该功能了。

    这里写图片描述

    3D Touch的相对压力大小(UITouch force properties)

    UITouch 有个force属性,可以根据这个检测3D Touch的相对力度大小。
    官方swift写的例子:根据按压力度不同改变画笔的宽度

    参考官方文档
    画板

    附上自己写的OC例子

    展开全文
  • IOS 3D Touch 开发教程

    2016-03-02 13:08:15
    这次我们就来讲讲传闻已久的3D Touch。  当然这个新功能不仅仅需要手机系统更新到最新的IOS9系统,更需要设备必须是iPhone6s及以上。哈哈哈。。。所以,这个功能目前也只能是iPhone6s的用户才能体验到。总的来说...

             前一阵子伴随着苹果发布新产品iPhone6s 和 IOS9新系统,一系列关于硬件和软件的新功能、新特性逐渐进入iPhone用户的视线。这次我们就来讲讲传闻已久的3D Touch。

            当然这个新功能不仅仅需要手机系统更新到最新的IOS9系统,更需要设备必须是iPhone6s及以上。哈哈哈。。。所以,这个功能目前也只能是iPhone6s的用户才能体验到。总的来说苹果推出3D Touch这个功能的目的和去年推出IOS8的时候推出扩展today的目的是一样:增加APP的快捷入口,方便和简化用户进入APP相应功能的路径,让用户更快的找到自己需要的应用功能。苹果官方文档对3D Touch的说明是这样的:

    With iOS 9, new iPhone models add a third dimension to the user interface.
    
    1、A user can now press your Home screen icon to immediately access functionality provided by your app.
    2、Within your app, a user can now press views to see previews of additional content and gain accelerated access to features.
            意思大概是这样的:

          1、用户可以通过3D Touch手势,按压主屏幕上的应用Icon,可以直接进入应用的相应的功能模块。(手机桌面上APP相应模块的快捷入口)

          2、用户可以通过3D Touch手势,按压对应的视图来预览视图的更多内容。(视图信息的快速预览)

           光靠上面的文字描述确实显得很苍白抽象。那么我们来看一下国内一些主流APP对于3D Touch功能的具体应用。

          就拿QQ来说,关于第一条说明的应用场景如下图的:


            我们可以通过一定力度按压桌面上QQ应用的图标,就可以出现一个快捷操作的视图。可以快速进入“扫一扫”或者“加好友”等其他模块。

            关于第二条说明的应用场景如下图的:

                       

             在消息的列表页面,用力按压某一条对话消息,就可以预览这条对话消息的具体内容。

            看完了具体的应用场景,我们一定很好奇这个3D Touch功能到底是怎么实现?其实3D Touch的实现一点也不复杂,相对于IOS8推出的today来说简单很多,基本不需要太多的代码操作。我们可以通过两个方式来实现3D Touch。

            1、通过设置标签:在项目的info.plist文件设置相应的标签就基本上可以完成大体工作了!

            2、通过代码的方式配置3D Touch。

            那么我们先来看一下代码方式是如何实现的:

            IOS9为 UIApplication类新增了一个属性shortcutItems来统一设置和管理应用的 3D Touch功能。

    @class UIApplicationShortcutItem;
    @interface UIApplication (UIShortcutItems)
    // Register shortcuts to display on the home screen, or retrieve currently registered shortcuts.
    @property (nullable, nonatomic, copy) NSArray<UIApplicationShortcutItem *> *shortcutItems NS_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;
    @end

             属性 shortcutItems是一个数组类型的数据,数组里面的数据是  UIApplicationShortcutItem类的对象。

    UIApplicationShortcutItem类也是IOS9为配置3D Touch而新增的类。也许我们已经猜到了,一个UIApplicationShortcutItem对象就是在桌面长按应用Icon弹窗视图中的一个栏目。也就是上面“扫一扫”栏目的入口。同时UIApplication类还新增了一个代理方法来处理3D Touch对应的手势操作。

    // Called when the user activates your application by selecting a shortcut on the home screen,
    // except when -application:willFinishLaunchingWithOptions: or -application:didFinishLaunchingWithOptions returns NO.
    - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;
    

           具体的代码实现:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
    
        //栏目1
        UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCompose];
        UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"item1" localizedTitle:@"入口1" localizedSubtitle:@"入口1副标题" icon:icon1 userInfo:nil];
    
        //栏目2
        UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay];
        UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"item2" localizedTitle:@"入口2" localizedSubtitle:@"入口2副标题" icon:icon2 userInfo:nil];
        
        //栏目3
        UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePause];
        UIApplicationShortcutItem *item3 = [[UIApplicationShortcutItem alloc] initWithType:@"item3" localizedTitle:@"入口3" localizedSubtitle:@"入口3副标题" icon:icon3 userInfo:nil];
        
        //栏目4
        UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];
        UIApplicationShortcutItem *item4 = [[UIApplicationShortcutItem alloc] initWithType:@"item4" localizedTitle:@"入口4" localizedSubtitle:@"入口4副标题" icon:icon4 userInfo:nil];
        
        //设置 shortcutItems   需要注意的是shortcutItems数组最多只能加入四个item,超过四个只会显示前面的四个
        application.shortcutItems = @[item1, item2, item3, item4];    
        
        return YES;
    }

     

    #pragma mark -  3D Touch 代理方法
    -(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
        //根据Item对应的type标识处理对应的点击操作
        NSString *itemType = shortcutItem.type;
        if([@"item1" isEqualToString:itemType]){
            
        }
        else if([@"item2" isEqualToString:itemType]){
            
        }
        else if ([@"item3" isEqualToString:itemType]){
            
        }
        else if ([@"item4" isEqualToString:itemType]){
            
        }
        
    }
    

            其中,UIApplicationShortcutIcon类就是设置每一个item项目的图标,这个图标可以是系统的图标也可以是自定义的图标。该类提供两个初始化方法来供我们选择:iconWithType:方法设置系统图标 ,iconWithTemplateImageName:方法设置自定义图标。具体的使用可以去查看该类的API。

            UIApplicationShortcutItem类中的几个属性需要说明一下。Type属性是用来标识每一个item项目的,通过这个标识我们可以区分点击相应的每一项该触发哪些操作(在3D Touch的代理方法中就是靠Type属性来区分点击的是哪一项)。localizedTitle属性是每一个item的标题。localizedSubtitle属性是每个item的副标题,这个副标题可有可无。icon属性也就是上面说的每个item对应的图标了。userInfo属性是信息字典,用于传值,这里设为空。

            需要注意的是,根据本人的试验: UIApplication类的shortcutItems数组最多只能放四个item。也就是说通过3D Touch按压桌面应用Icon弹出的操作视图,该视图里面最多只能有四个快捷入口选项。超过四个只能显示最前面的四个。

            到这里我们就通过代码的方式实现了3D Touch功能了。

           下面讲一下通过设置标签的形式实现3D Touch功能。我们只需要设置静态标签然后在UIApplication类中实现3D Touch的代理方法就可以了,静态标签是我们在项目的配置plist文件中配置的标签,只要设置好对应的标签和键值对就没问题。


            上面的代码实现的应用效果如下图:




    展开全文
  • 今天呢来和大家讲一下iOS9的新特性3DTouch开发iOS10都已经出了Beta版,这篇教程真是来的有点晚……)3DTouch的功能就是用户可以在HomeScreen上通过用力按压屏幕,使屏幕弹出快捷菜单,就好像是我们在Windows上右键...
  • iOS开发3D Touch

    2015-12-15 19:29:15
    3D Touch 是随着iPhone6s 和iPhone6s Plus 的推出,在...开发3D Touch 的话,Xcode必须是7.0之上版本,手机则需要iPhone6s之后并且系统在iOS9.0之上的手机。 写的一个小Demo:http://download.csdn.net/detail/longi
  • 1.在应用的info.plist 文件的 UIApplicationShortcutItems 数组中,定义静态快速选项; [key]UIApplicationShortcutItems[/key]  [array]  [dict]  [key]UIApplicationShortcutItemIconType[/key]
  • iOS 3D Touch浅谈

    2016-10-18 10:05:03
    一、什么是3D Touch3D Touch是iPhone 6s推出的一种可以让你与手机进行互动的全新方式。除了轻点、轻扫、双指开合这些熟悉的 Multi‑Touch 手势之外,3D Touch 还带来 Peek 和 Pop,为 iPhone 的使用体验开拓出全新...
  • iOS 3D touch 开发

    2015-11-21 09:47:22
    1.在AppDelegate.m中添加方法,在6s设备上实现了弹出小窗口的效果,点击默认打开应用程序,但是不会执行相关方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)...
  • iOS-3D touch相关开发

    2016-03-26 18:46:19
    3D Touch,就是屏幕可感应不同的感压力度触控,有Peek Pop 两种新手势。 6s出来的时候,我对这增加的新功能激动不已 ~ ~ 想着新技术,新玩意,App会越来越好的 ~ ~ 3D Touch目前实现的功能,该实现的也实现了。现在...
  • iOS 3D Touch开发

    2019-10-06 15:10:53
    xcode7是支持3D Touch开发的,可是模拟器并不支持这个手势,我们只能在真机上进行学习与测试,但是github上有人为我们提供了这样的一个插件,可以让我们在模拟器上进行3D Touch的效果测试: 地址: ...
  • ios 3D Touch功能的实现

    2016-05-31 15:01:51
    ios9中3D Touch功能是一个新的亮点,这个方便快捷的功能实现也比较简单,废话不多说直接上代码, 一.3D Touch功能添加分为两种(1).静态标签 (2).动态标签 (1).静态添加 这个方法是在app的plist文件中添加如下图的...
  • iOS开发3D Touch 开发

    2019-07-23 17:03:48
    在App 的开发中对于开发人员来说新设备以及新功能的适配无疑是一个很苦逼的事。在今年九月份iPhone 6S 以及 6S+ 出来之后,新的功能 3D Touch又是一个比较头疼的事。刚刚看到的时候以为是比较麻烦的东西 看着开发...
  • iOS 3D Touch功能

    2016-03-04 09:54:33
    新的触摸体验——iOS9的3D Touch 一、引言 二、在模拟器上学习和测试3D Touch 附.SBShortcutMenuSimulator的安装和使用 三、3D Touch的主要应用 四、3D Touch的三大模块 1、Home Screen Quick Actions 2、...
  • iOS9-3D Touch开发

    2016-06-08 11:58:27
    iOS9 3D Touch
  • 一、简介3D Touch是指:通过对屏幕施加不同程度的压力来访问附加功能。应用可以通过显示菜单、展示其他内容和播放动画等形式来表现3D Touch,该功能从6s及其以上机型开始得到支持。3D Touch的主要体现形式有三种:...
1 2 3 4 5 ... 20
收藏数 6,818
精华内容 2,727
关键字:

3d ios touch 开发