iOS技术3D Touch 、指纹解锁iOS

3DTouch攻略

2016-09-08  本文已影响780人  GiantAxe77

3DTouch概览

3DTouch.png

是不是看起来很炫酷吊炸天哈哈哈?

亲们先来预览下效果图哈:

酷炫吊炸天3DTouch
这里给出官方链接:API资料 查阅资料

Quick Actions用法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // 首先判断是否支持3DTouch
    if(self.window.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
    {
        [self setup3DTouch:application];
    }
    return YES;
}

- (void)setup3DTouch:(UIApplication *)app
{
    // 设置图标icon (UIApplicationShortcutIconTypeMarkLocation为系统提供的样式之一)
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeMarkLocation];

    // 设置shortcutItem
    //
    // type : 唯一标识
    // localizedTitle : 标题
    // localizedSubtitle : 子标题
    // icon : 图标
    // userInfo : 传递的字典
    UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"item1" localizedTitle:@"Sweet" localizedSubtitle:@"honey" icon:icon1 userInfo:nil];
    
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCloud];
    UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"item2" localizedTitle:@"Super" localizedSubtitle:@"me" icon:icon2 userInfo:nil];
    
    UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeMessage];
    UIApplicationShortcutItem *item3 = [[UIApplicationShortcutItem alloc] initWithType:@"item3" localizedTitle:@"Legend" localizedSubtitle:@"logo" icon:icon3 userInfo:nil];
    
    // 加入到shortcutItems数组中
    app.shortcutItems = @[item1, item2, item3];
}

#pragma mark - UIApplicationDelegate

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
    if([shortcutItem.type isEqualToString:@"item1"])
    {
        NSLog(@"to do sth...");
    }
    
}
效果图.jpeg 静态添加3DTouch按钮.png

Peek and Pop用法

#pragma mark - life cycle

//页面一进来最好先判断下3DTouch是否可用,不可用就尴尬了😆
- (void)viewWillAppear:(BOOL)animated{
     [super viewWillAppear:animated];
      if(self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
      {
          NSLog(@"do sth");
      }
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 给响应Peek&Pop手势的视图进行注册,这里是给一个imageView进行注册😋
    [self registerForPreviewingWithDelegate:self sourceView:self.imgView];

}

#pragma mark - 3DTouch

// Called when the iOS interface environment changes.
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
{   // 环境变化时判断3DTouch是否可用
    if(self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
    {
        NSLog(@"do sth");
    }
}

#pragma mark - UIViewControllerPreviewingDelegate

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
{
    // 通过上下文可以调整不被虚化的范围
    previewingContext.sourceRect = CGRectMake(10, 10, 10, 10);
    
    // 预览控制器是我的另外一个控制器😆
    AXEParticleViewController *vc = [AXEParticleViewController new];
    return vc;
}

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
    // 这个相当于push操作,push到预览的控制器
    [self showViewController:viewControllerToCommit sender:self];
}

#pragma mark - 👇下面代码是在预览控制器中写的👇

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems
{
    // 生成UIPreviewAction
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"one" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Action 1");
    }];
    
    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"two" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
        NSLog(@"Action 2");
    }];
    
    // 添加到数组里返回
    NSArray *actions = @[action1, action2];
    
    return actions;
}

欢迎小伙伴指出不足之处,鄙人将竭尽全力哈萨黑~

上一篇 下一篇

猜你喜欢

热点阅读