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;
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/werctzzz/article/details/50433000

iOS 3D Touch 实现UITableViewCell 预览

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

IOS实现3DTouch功能

3DTouch目前在手机上有两种体现方式,一种是用力按下app的图片icon,会弹出选项菜单,就像电脑上的右键。一种是在应用内的界面上用力按下,弹出的预览界面。 接下...
  • iOS_yanmy
  • iOS_yanmy
  • 2016年10月09日 23:06
  • 3076

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

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

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

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

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

上一次写了3DTouch在app icon的使用,时间隔了那么久,其实我早就写完了····就是一直忙着没时间 发表文章分享,也是对不住了~ 这篇文章讲的是3DTouch在页面内的使用  首先声明  c...
  • werctzzz
  • werctzzz
  • 2015年12月30日 10:56
  • 1870

iOS ----新特性 3DTouch 开发教程全解(含源码)

本文主要讲解3DTouch各种场景下的开发方法,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置UIApplicationShortcutItem...
  • iotjin
  • iotjin
  • 2016年04月25日 21:53
  • 570

IOS 3D Touch 开发教程

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

iOS开发之3DTouch集成

静态添加入口标签在info.plist中添加如图所示 各项都代表的意思首先是UIApplicationShortcutItems,他是一个数组类型,数组中的每一个元素表示一个入口标签。然后是Item...
  • sinat_30162391
  • sinat_30162391
  • 2016年04月08日 13:51
  • 1793

3D Touch-对TableView里的具体控件操作,类似微博。

去年6S上市之后,立马入了新机,然后简单看了下3D Touch的API。当时只写了对Tableview的每个cell进行了操作的简单demo,还有就是对图标加了3D TOUCH操作。 最近的一个需求...
  • qq_30513483
  • qq_30513483
  • 2016年09月01日 22:30
  • 455

iOS 9 以后使用3D touch()

3D Touch在iOS9中使用3D Touch  官方文档 3D touch 地址:https://developer.apple.com/library/content/documentatio...
  • yuanmengong886
  • yuanmengong886
  • 2017年01月10日 10:14
  • 619
收藏助手
不良信息举报
您举报文章:iOS 3D Touch开发tableview页面内的使用
举报原因:
原因补充:

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