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

原创 2015年12月30日 10:56:16

上一次写了3DTouch在app icon的使用,时间隔了那么久,其实我早就写完了····就是一直忙着没时间

发表文章分享,也是对不住了~

这篇文章讲的是3DTouch在页面内的使用 

首先声明  childVC(3DTOUCH 的页面)

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIViewControllerPreviewingDelegate>
{
    UITableView * table;
    NSArray * array;
    _DPreViewController * childVC;
}
@end

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.navigationBar.translucent = NO;
    // 初始化数据源
    array = [NSArray arrayWithObjects:@"大部分地区晴天",@"西部地区为阴天",@"东部地区有小雨",@"南部地区晴转多云", nil];
    
    self.view.backgroundColor = [UIColor blueColor];
    [self createTab];
    // Do any additional setup after loading the view, typically from a nib.
}

// 3DTouch的动作关联tableview的index
# pragma mark 3D-Touch
- (UIViewController *)previewingContext:(id)context viewControllerForLocation:(CGPoint) point
{
    // 获取tableview点击的位置
    NSIndexPath *indexPath = [table indexPathForCell:(UITableViewCell* )[context sourceView]];
    
    NSArray * arr = [NSArray arrayWithObjects:@"11.gif",@"22.gif",@"33.gif",@"44.gif", nil];
//    NSArray *colorArr = @[[UIColor redColor],[UIColor blackColor],[UIColor greenColor],[UIColor blackColor]];
    
    // 这是即将显示的3Dtouch 出现效果的页面
    childVC = [[_DPreViewController alloc]init];
    [childVC getBackgruandcolor:[UIColor whiteColor] getData:[array objectAtIndex:indexPath.row] imageName:[arr objectAtIndex:indexPath.row]];
    
    childVC.preferredContentSize = CGSizeMake(0.0f,600.f);
    return childVC;
}

// 千万不要忘记设置代理
- (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
    [self showViewController:viewControllerToCommit sender:self];
}
然后接下来是3Dtouch页面的设置:

// 初始化数据
- (void)getBackgruandcolor:(UIColor *)color getData:(NSString *)str imageName:(NSString * )name
{
    self.view.backgroundColor = color;
    datastr = str;
    imagename = name;
    [self createView];
}

// <span style="white-space:pre">	</span>3dtouch页面的元素 
- (void)createView
{
    UIImageView * image = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height / 2)];
    [image setImage:[UIImage imageNamed:imagename]];
    [self.view addSubview:image];
    
    UILabel * lable = [[UILabel alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height / 2, self.view.frame.size.width, self.view.frame.size.height / 2)];
    lable.textAlignment = NSTextAlignmentCenter;
    lable.text = datastr;
    lable.font = [UIFont systemFontOfSize:20];
    [self.view addSubview:lable];
    
}

// 这是3Dtouch出现的页面 上滑以后出现的菜单选项每一个item都是一个选项
-(NSArray<id<UIPreviewActionItem>> *)previewActionItems
{
    UIPreviewAction * action1 = [UIPreviewAction actionWithTitle:@"这就是所谓的3DTouch" style:0 handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        
//        PViewController *aaaa = [[PViewController alloc] init];
//        [[self topViewController] presentViewController:aaaa animated:YES completion:nil];
    }];
    
    UIPreviewAction * action2 = [UIPreviewAction actionWithTitle:@"随便点,点不坏" style:0 handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        UIViewController *aaaa = [[UIViewController alloc] init];
        aaaa.view.backgroundColor = [UIColor brownColor];
        [[self topViewController].navigationController pushViewController:aaaa animated:YES];
        
    }];
    UIPreviewAction * action3 = [UIPreviewAction actionWithTitle:@"多去玩玩吧~挺好玩" style:0 handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        
    }];
    
    NSArray * actions = @[action1,action2,action3];
    
    return actions;
}
// 以下两个为默认设定,直接复制粘贴就行
// 根视图的返回
- (UIViewController*)topViewController
{
    return [self topViewControllerWithRootViewController:[AppDelegate appDelegate].window.rootViewController];
}
// 根视图的类型
- (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController
{
    if ([rootViewController isKindOfClass:[UITabBarController class]]) {
        UITabBarController *tabBarController = (UITabBarController *)rootViewController;
        return [self topViewControllerWithRootViewController:tabBarController.selectedViewController];
    } else if ([rootViewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController* navigationController = (UINavigationController*)rootViewController;
        return [self topViewControllerWithRootViewController:navigationController.visibleViewController];
    } else if (rootViewController.presentedViewController) {
        UIViewController* presentedViewController = rootViewController.presentedViewController;
        return [self topViewControllerWithRootViewController:presentedViewController];
    } else {
        return rootViewController;
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 3D Touch 实现UITableViewCell 预览

效果图好丑. 测试手机iPhone6s , 也就是使用了新特性 3DTouch. 囧 不知道的以为会有多难.在开始之前UIViewControllerPreviewingDelegate // 签订...
  • sinat_30162391
  • sinat_30162391
  • 2016年05月22日 00:47
  • 3305

IOS 实现3D Touch在tableView的简单应用

3D Touch正在改变用户的操作习惯,体验了下,确实挺酷。  做为个开发者,一定想知道如何才能集成这样操作功能。 话不多说,直接上代码(因为3D Touch的开发资料网止已经太多了,不说了) ...
  • u010277446
  • u010277446
  • 2016年03月16日 10:25
  • 695

3DTouch的使用

  • 2017年01月10日 21:43
  • 36KB
  • 下载

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

之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也能弄一过swift版的3D Touoch。。。 上代码。 一、3D Touch重按主屏icon出现快捷标签有两种添...
  • u010277446
  • u010277446
  • 2016年06月02日 19:03
  • 4349

iOS 3D Touch开发 很良心的版本原创!

之前一直在忙着维护项目,偶然的一天闲着玩手机玩到3Dtouch,看着效果挺不错的 于是就尝试着搜索了一下相关的文案,结果除了官网给的全英文api意外国内的基本都 是互相抄袭,我搜了37篇文章,29篇相...
  • werctzzz
  • werctzzz
  • 2015年12月17日 09:51
  • 3135

IOS实现3DTouch功能

赶需求期间,想着别人应用都搞起3DTouch功能了,咱也来装逼一会,凸显下逼格。 废话少说,先搜索了前人的热心奉献,自己再动手丰衣足食,下面归纳总结下。 首先,想要体验3DTouch功能,必须至少得是...
  • a416863220
  • a416863220
  • 2016年04月22日 10:35
  • 8624

非常简单的几行代码实现炫酷的tableview cell动画

在任何有cell先出现在屏幕上的时候都会有这么一个效果,非常的流畅,也非常有意思(忍不住不停地把玩。。)。实现起来也非常简单,iOS原生支持,几行代码就可以搞定,在众多的tableview代理方法中,...
  • liyunliyun08
  • liyunliyun08
  • 2016年04月26日 13:36
  • 829

IOS_3DTouch实现

1.前言     随着6S的到来,3DTouch被各大热门APP迅速普及,博主亲自体验后,发现使用便捷性大幅提高,随后自己照着文档,写了个Demo出来,分享给大家,希望能对有需要的朋友提供有一些帮助。...
  • gaoyong0624
  • gaoyong0624
  • 2015年12月15日 16:44
  • 553

3D Touch 的实现和系统分享功能

3D Touch其实就是快速进入指定app界面的一种方式。 下面和大家分享一下简单的实现 1、静态标签 静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序...
  • yishengzhiai005
  • yishengzhiai005
  • 2016年12月07日 15:30
  • 1829

iOS 3DTouch 代码实现

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc...
  • chenzheiu1210
  • chenzheiu1210
  • 2016年10月19日 14:18
  • 414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 3D Touch开发tableview页面内的使用
举报原因:
原因补充:

(最多只允许输入30个字)