国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS-指壓即達,如何集成iOS9里的3DTouch

2019-11-14 18:09:58
字體:
來源:轉載
供稿:網友

1.前言  

 
隨著6S的到來,3DTouch被各大熱門APP迅速普及,博主親自體驗后,發現使用便捷性大幅提高,隨后自己照著文檔,寫了個Demo出來,分享給大家,希望能對有需要的朋友提供有一些幫助。

2.如何使用3D Touch?  

2.1.主界面重按APP圖標,彈出Touch菜單  

AppleDelegate文件中的程序入口處配置:

didFinishLaunchingWithOptions

    //給App圖標添加3D Touch菜單    //拍照    //菜單圖標    UIapplicationShortcutIcon *iconCamera = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd];    //菜單文字    UIMutableApplicationShortcutItem *itemCamera = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"拍照"];    //綁定信息到指定菜單    itemCamera.icon = iconCamera;    //相冊    //菜單圖標    UIApplicationShortcutIcon *iconPhotoLibrary = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch];    //菜單文字    UIMutableApplicationShortcutItem *itemPhotoLibrary = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"相冊"];    //綁定信息到指定菜單    itemPhotoLibrary.icon = iconPhotoLibrary;    //綁定到App icon    application.shortcutItems = @[itemCamera,itemPhotoLibrary];

 彈出菜單,我們需要讓用戶點擊后跳轉指定頁面

這里我們會用到AppDelegate里新增加的一個方法

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

 讓后我們需要在這個方法里做跳轉的操作

    //照相type    if ([shortcutItem.type isEqualToString:@"1"]) {               UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化        picker.allowsEditing = YES;//設置可編輯        picker.sourceType = UIImagePickerControllerSourceTypeCamera;        [self.window.rootViewController PResentViewController:picker animated:YES completion:nil];//進入照相界面           }    //相冊type    if ([shortcutItem.type isEqualToString:@"2"]) {               UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化        picker.allowsEditing = YES;//設置可編輯        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;        [self.window.rootViewController presentViewController:picker animated:YES completion:nil];//進入圖片庫

 點擊后分別會進入相機和相冊

 

2.2. 3DTouch輕按預覽功能,預覽時底部菜單的添加  

首先我們要把輕按預覽長按手勢區分開來,這里要在初始化時做一個基本的檢測。
 
nterface ViewController () <UIViewControllerPreviewingDelegate>{    UILongPressGestureRecognizer *_longPress;}@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    UILongPressGestureRecognizer *longPressGr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressToDo)];    _longPress = longPressGr;}//檢測頁面是否處于3DTouch- (void)check3DTouch{       if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {               [self registerForPreviewingWithDelegate:self sourceView:self.view];        NSLog(@"3D Touch 開啟");        //長按停止        _longPress.enabled = NO;           }else{        _longPress.enabled = YES;    }   }- (void)viewWillAppear:(BOOL)animated{       [self check3DTouch];   }

 

然后我們需要實現 UIViewControllerPreviewingDelegate的協議

@interface ViewController () <UIViewControllerPreviewingDelegate>
//然后實現代理方法- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location;

 

#pragma mark >> 3D touch 代理方法//輕按進入浮動預覽頁面- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{        //注意這里我因為測試,沒做具體的位置處理,如果需要定位到具體的圖片Cell位置的話,可以用location通過tableView的convertPoint來取到指定Cell        aspreviewViewController *vc = [[ASPreviewViewController alloc] init];    vc.view.frame = self.view.frame;    UIImageView *er = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"123.png"]];    vc.view = er;    return vc;    }

 

 完成后可以實現基本的預覽效果:

 

最后我們加上一個

預覽時下滑底部菜單的添加

在我們剛剛創建的預覽控制器ASPreviewViewController里實現 UIViewControllerPreviewingDelegate的協議

然后重寫它的代理方法

- (NSArray<id<UipreviewActionItem>> *)previewActionItems;

 

//預覽頁面 底部Action Items- (NSArray<id<UIPreviewActionItem>> *)previewActionItems{        UIPreviewAction *p1 =[UIPreviewAction actionWithTitle:@"分享" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {        NSLog(@"點擊了分享");    }];        UIPreviewAction *p2 =[UIPreviewAction actionWithTitle:@"收藏" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {        NSLog(@"點擊了收藏");    }];        NSArray *actions = @[p1,p2];    return actions;}

 

作者: 清澈Saup
出處: http://www.survivalescaperooms.com/qingche/
本文版權歸作者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
 
 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜川县| 佛坪县| 扶沟县| 德阳市| 贵州省| 凤冈县| 广灵县| 玉龙| 独山县| 七台河市| 泽普县| 和田市| 南康市| 章丘市| 祁连县| 垣曲县| 南皮县| 林口县| 河西区| 两当县| 宁蒗| 稻城县| 大埔县| 磐安县| 麟游县| 弋阳县| 青神县| 泾源县| 三原县| 两当县| 长武县| 乡城县| 黄龙县| 嘉义县| 伊金霍洛旗| 娱乐| 孝感市| 石林| 岫岩| 景德镇市| 茶陵县|