• ios 3DTouch基本使用教程


    尽管3DTouch已经出来很久,但是项目最近才接触到,所以就整理了一下自己实现的代码,记录。

    1.实现重按app,弹出窗口(如图所示)

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中实现:

        //添加3dtouch
        //动态加载自定义的ShortcutItem
        if (application.shortcutItems.count == 0) {
        
            UIMutableApplicationShortcutItem *itemScan = [[UIMutableApplicationShortcutItem alloc]initWithType:@"Scan"  localizedTitle:@"扫一扫" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"icon2"] userInfo:nil];
            UIMutableApplicationShortcutItem *itemWrite = [[UIMutableApplicationShortcutItem alloc]initWithType:@"listen" localizedTitle:@"去写作" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"icon1"] userInfo:nil];
    
            application.shortcutItems = @[itemScan,itemListen];
        }
    /*ps:about icon
    [UIApplicationShortcutIcon iconWithTemplateImageName:@"icon1"]//这是替换自己的图片
    [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCompose];//这是系统内的特定icon*/
    

      随后实现:

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

    在该方法中,可以通过判断唯一标示符(之前设置的initwithtype:)或者判断localizedTitle来区别点击的哪一行

    而后可以使用通知或者直接导航等等跳转到你想要去的界面,这里就不细说了。

    2.重按cell的3DTouch效果

     

     实现

    UIViewControllerPreviewingDelegate代理方法

    - (void)viewDidLoad {
           [self registerPreview];
    }
    
    -(void)registerPreview{
    //判断是否支持3dtouch,设置委托代理
        if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
            [self registerForPreviewingWithDelegate:self sourceView:self.tableView];
        }
        else {
            NSLog(@"该设备不支持3D-Touch");
        }
    }
    
    #pragma mark - UIViewControllerPreviewingDelegate
    - (nullable UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
    {
        NSIndexPath * indexPath =[_tableView indexPathForRowAtPoint:location];
        
        UITableViewCell * cell = [_tableView cellForRowAtIndexPath:indexPath];
    //以上得到你点击的哪一行的cell
        if (!cell) {
            return nil;
        }
    //显示3dtouchpreviewViewcontroller界面
        3DTouchPreviewViewController *detailVC =[[3DTouchPreviewViewController alloc]init];
        detailVC.preferredContentSize = CGSizeMake(0, 0);
        previewingContext.sourceRect = cell.frame;
        return detailVC;
    }
    
    - (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
    {
        [self.navigationController pushViewController:viewControllerToCommit animated:NO];
    }

    在3dtouchpreviewViewController.m中实现:

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        self.view.backgroundColor =[UIColor whiteColor];
       //你所想要显示的东西
        UILabel *textlabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 40)];
        textlabel.backgroundColor = [UIColor colorWithRed:54/255.0 green:54/255.0 blue:54/255.0 alpha:1];
        textlabel.textColor = [UIColor whiteColor];
        textlabel.text = @"哈哈哈哈哈哈";
        textlabel.textAlignment = NSTextAlignmentCenter;
        textlabel.font = [UIFont fontWithName:@"STHeitiSC-Light" size:16];
        [self.view addSubview:textlabel];
        
        _imageViewShow =[[UIImageView alloc]init];
        _imageViewShow.frame = CGRectMake(0, 40, self.view.bounds.size.width, self.view.bounds.size.height-40);
        _imageViewShow.image = [UIImage imageNamed:@"picture"];
        [self.view addSubview:_imageViewShow];
    
    }
    
    //下面的actionview
    - (NSArray <id <UIPreviewActionItem>> *)previewActionItems
    {
        UIPreviewAction *action = [UIPreviewAction actionWithTitle:@"删除" style: UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
            NSLog(@"实现删除功能!");
        }];
        
        return @[action];
    }
    

      以上就是3DTouch的简单使用,如有不足之处,欢迎指出。

  • 相关阅读:
    Win8.1恢复被禁用虚拟WiFi适配器的方法
    VM虚拟机安装AndroidX86版
    (转)java 调用webservice的各种方法总结
    在虚拟机中配置FastDFS+Nginx模块
    Nodejs&express+mongodb完成简单用户登录(即Nodejs入门)
    C# WPF 自学 MVVM简单介绍
    【ASP.NET Core】在CentOS上安装.NET Core运行时、部署到CentOS
    log4net 写入 mongodb+Mongodb记录日志
    MongoDB学习笔记
    使用druid 数据池对连接密码加密
  • 原文地址:https://www.cnblogs.com/oldk/p/5577560.html
Copyright © 2020-2023  润新知