ios開發(fā)3D touch

1.模擬器touch 效果git下載連接:https://github.com/DeskConnect/SBShortcutMenuSimulator

前一陣子伴隨著蘋果發(fā)布新產(chǎn)品iPhone6s 和 IOS9新系統(tǒng),一系列關(guān)于硬件和軟件的新功能、新特性逐漸進(jìn)入iPhone用戶的視線。這次我們就來講講傳聞已久的3D Touch。? ? ? ? 當(dāng)然這個(gè)新功能不僅僅需要手機(jī)系統(tǒng)更新到最新的IOS9系統(tǒng),更需要設(shè)備必須是iPhone6s及以上。哈哈哈。。。所以,這個(gè)功能目前也只能是iPhone6s的用戶才能體驗(yàn)到。總的來說蘋果推出3D Touch這個(gè)功能的目的和去年推出IOS8的時(shí)候推出擴(kuò)展today的目的是一樣:增加APP的快捷入口,方便和簡化用戶進(jìn)入APP相應(yīng)功能的路徑,讓用戶更快的找到自己需要的應(yīng)用功能。蘋果官方文檔對3D Touch的說明是這樣的:

[plain] view plain copy

1. With iOS 9, new iPhone models add a third dimension to the user interface.??

2.??

?3. 1、A user can now press your Home screen icon to immediately access functionality provided by your app.

? 4. 2、Within your app, a user can now press views to see previews of additional content and gain accelerated access to features.? ? ? ?

?? 意思大概是這樣的:? ? ??

1、用戶可以通過3D Touch手勢,按壓主屏幕上的應(yīng)用Icon,可以直接進(jìn)入應(yīng)用的相應(yīng)的功能模塊。(手機(jī)桌面上APP相應(yīng)模塊的快捷入口)? ? ?

?2、用戶可以通過3D Touch手勢,按壓對應(yīng)的視圖來預(yù)覽視圖的更多內(nèi)容。(視圖信息的快速預(yù)覽)? ? ? 光靠上面的文字描述確實(shí)顯得很蒼白抽象。那么我們來看一下國內(nèi)一些主流APP對于3D Touch功能的具體應(yīng)用。? ? ?

?就拿QQ來說,關(guān)于第一條說明的應(yīng)用場景如下圖的:? ? ? ?


?我們可以通過一定力度按壓桌面上QQ應(yīng)用的圖標(biāo),就可以出現(xiàn)一個(gè)快捷操作的視圖。可以快速進(jìn)入“掃一掃”或者“加好友”等其他模塊。? ? ? ??

關(guān)于第二條說明的應(yīng)用場景如下圖的:??

? ? ? ? ? ? ? ? ? ? ? ??

在消息的列表頁面,用力按壓某一條對話消息,就可以預(yù)覽這條對話消息的具體內(nèi)容。? ? ? ??

看完了具體的應(yīng)用場景,我們一定很好奇這個(gè)3D Touch功能到底是怎么實(shí)現(xiàn)?其實(shí)3D Touch的實(shí)現(xiàn)一點(diǎn)也不復(fù)雜,相對于IOS8推出的today來說簡單很多,基本不需要太多的代碼操作。我們可以通過兩個(gè)方式來實(shí)現(xiàn)3D Touch。? ? ? ??

1、通過設(shè)置標(biāo)簽:在項(xiàng)目的info.plist文件設(shè)置相應(yīng)的標(biāo)簽就基本上可以完成大體工作了!? ? ? ??

2、通過代碼的方式配置3D Touch。? ? ? ?

?那么我們先來看一下代碼方式是如何實(shí)現(xiàn)的:? ? ??

? IOS9為 UIApplication類新增了一個(gè)屬性shortcutItems來統(tǒng)一設(shè)置和管理應(yīng)用的 3D Touch功能。

[objc] view plain copy

1. @class UIApplicationShortcutItem;??

2. @interface UIApplication (UIShortcutItems)??

3. // Register shortcuts to display on the home screen, or retrieve currently registered shortcuts.?

?4. @property (nullable, nonatomic, copy) NSArray*shortcutItems NS_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;

5. @end

屬性?shortcutItems是一個(gè)數(shù)組類型的數(shù)據(jù),數(shù)組里面的數(shù)據(jù)是 ?UIApplicationShortcutItem類的對象。

UIApplicationShortcutItem類也是IOS9為配置3D Touch而新增的類。也許我們已經(jīng)猜到了,一個(gè)UIApplicationShortcutItem對象就是在桌面長按應(yīng)用Icon彈窗視圖中的一個(gè)欄目。也就是上面“掃一掃”欄目的入口。同時(shí)UIApplication類還新增了一個(gè)代理方法來處理3D Touch對應(yīng)的手勢操作。

[objc] view plain copy

1. //?Called?when?the?user?activates?your?application?by?selecting?a?shortcut?on?the?home?screen,

2. //?except?when?-application:willFinishLaunchingWithOptions:?or?-application:didFinishLaunchingWithOptions?returns?NO.

3. -?(void)application:(UIApplication?*)application?performActionForShortcutItem:(UIApplicationShortcutItem?*)shortcutItem?completionHandler:(void(^)(BOOL?succeeded))completionHandler?NS_AVAILABLE_IOS(9_0)?__TVOS_PROHIBITED;

具體的代碼實(shí)現(xiàn):

[objc] view plain copy

?-?(BOOL)application:(UIApplication?*)application?didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions?{

? ?//?Override?point?for?customization?after?application?launch.


? ?//欄目1

? ? UIApplicationShortcutIcon?*icon1?=?[UIApplicationShortcutIcon?iconWithType:UIApplicationShortcutIconTypeCompose];

? ?UIApplicationShortcutItem?*item1?=?[[UIApplicationShortcutItem?alloc]?initWithType:@"item1"?localizedTitle:@"入口1"?localizedSubtitle:@"入口1副標(biāo)題"?icon:icon1?userInfo:nil];


? ?//欄目2

? ? UIApplicationShortcutIcon?*icon2?=?[UIApplicationShortcutIcon?iconWithType:UIApplicationShortcutIconTypePlay];

? ?UIApplicationShortcutItem?*item2?=?[[UIApplicationShortcutItem?alloc]?initWithType:@"item2"?localizedTitle:@"入口2"?localizedSubtitle:@"入口2副標(biāo)題"?icon:icon2?userInfo:nil];


? //欄目3

? ? UIApplicationShortcutIcon?*icon3?=?[UIApplicationShortcutIcon?iconWithType:UIApplicationShortcutIconTypePause];

? ? UIApplicationShortcutItem?*item3?=?[[UIApplicationShortcutItem?alloc]?initWithType:@"item3"?localizedTitle:@"入口3"?localizedSubtitle:@"入口3副標(biāo)題"?icon:icon3?userInfo:nil];


? ?//欄目4

? ?UIApplicationShortcutIcon?*icon4?=?[UIApplicationShortcutIcon?iconWithType:UIApplicationShortcutIconTypeAdd];

? ?UIApplicationShortcutItem?*item4?=?[[UIApplicationShortcutItem?alloc]?initWithType:@"item4"?localizedTitle:@"入口4"?localizedSubtitle:@"入口4副標(biāo)題"?icon:icon4?userInfo:nil];


? ? //設(shè)置?shortcutItems???需要注意的是shortcutItems數(shù)組最多只能加入四個(gè)item,超過四個(gè)只會(huì)顯示前面的四個(gè)

? ?application.shortcutItems?=?@[item1,?item2,?item3,?item4];


? ? return?YES;

?}

[objc] view plain copy

?#pragma?mark?-??3D?Touch?代理方法

-(void)application:(UIApplication?*)application?performActionForShortcutItem:(UIApplicationShortcutItem?*)shortcutItem?completionHandler:(void?(^)(BOOL))completionHandler{

? ? ?//根據(jù)Item對應(yīng)的type標(biāo)識(shí)處理對應(yīng)的點(diǎn)擊操作

? ?NSString?*itemType?=?shortcutItem.type;

? ?if([@"item1"?isEqualToString:itemType]){


? ? }

? ? else?if([@"item2"?isEqualToString:itemType]){


? ? }

? ?else?if?([@"item3"?isEqualToString:itemType]){


? ? }

? ?else?if?([@"item4"?isEqualToString:itemType]){


? ?}

? }

其中,UIApplicationShortcutIcon類就是設(shè)置每一個(gè)item項(xiàng)目的圖標(biāo),這個(gè)圖標(biāo)可以是系統(tǒng)的圖標(biāo)也可以是自定義的圖標(biāo)。該類提供兩個(gè)初始化方法來供我們選擇:iconWithType:方法設(shè)置系統(tǒng)圖標(biāo) ,iconWithTemplateImageName:方法設(shè)置自定義圖標(biāo)。具體的使用可以去查看該類的API。

UIApplicationShortcutItem類中的幾個(gè)屬性需要說明一下。Type屬性是用來標(biāo)識(shí)每一個(gè)item項(xiàng)目的,通過這個(gè)標(biāo)識(shí)我們可以區(qū)分點(diǎn)擊相應(yīng)的每一項(xiàng)該觸發(fā)哪些操作(在3D Touch的代理方法中就是靠Type屬性來區(qū)分點(diǎn)擊的是哪一項(xiàng))。localizedTitle屬性是每一個(gè)item的標(biāo)題。localizedSubtitle屬性是每個(gè)item的副標(biāo)題,這個(gè)副標(biāo)題可有可無。icon屬性也就是上面說的每個(gè)item對應(yīng)的圖標(biāo)了。userInfo屬性是信息字典,用于傳值,這里設(shè)為空。

需要注意的是,根據(jù)本人的試驗(yàn):?UIApplication類的shortcutItems數(shù)組最多只能放四個(gè)item。也就是說通過3D Touch按壓桌面應(yīng)用Icon彈出的操作視圖,該視圖里面最多只能有四個(gè)快捷入口選項(xiàng)。超過四個(gè)只能顯示最前面的四個(gè)。

到這里我們就通過代碼的方式實(shí)現(xiàn)了3D Touch功能了。

下面講一下通過設(shè)置標(biāo)簽的形式實(shí)現(xiàn)3D Touch功能。我們只需要設(shè)置靜態(tài)標(biāo)簽然后在UIApplication類中實(shí)現(xiàn)3D Touch的代理方法就可以了,靜態(tài)標(biāo)簽是我們在項(xiàng)目的配置plist文件中配置的標(biāo)簽,只要設(shè)置好對應(yīng)的標(biāo)簽和鍵值對就沒問題。


上面的代碼實(shí)現(xiàn)的應(yīng)用效果如下圖:

上面的代碼實(shí)現(xiàn)的應(yīng)用效果如下圖:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:主屏幕按壓應(yīng)用圖標(biāo)展示快捷選項(xiàng) 注意:應(yīng)用最多有4個(gè)快捷選項(xiàng)標(biāo)簽。 1.靜態(tài)標(biāo)簽 1-打開項(xiàng)目的plist文...
    瘋狂小魚人閱讀 753評論 0 1
  • 專著:http://www.itdecent.cn/p/3443a3b27b2d 1.簡單的介紹一下3D Touc...
    violafa閱讀 1,095評論 1 0
  • 3D Touch介紹 從iPhone 6s開始,產(chǎn)品都添加了一項(xiàng)硬件屬性,叫做3D touch。作為屏幕的一部分,...
    歪筆書生_閱讀 708評論 0 0
  • 3D Touch 概述: 從.Net轉(zhuǎn)來也快有半年之多了,從小生到現(xiàn)在也算是經(jīng)歷了無所bug了,不過還是打到不了I...
    LitterL閱讀 810評論 8 1
  • 這就是 iOS SpringBoard 上用力點(diǎn)按 App Icon 彈出的快捷操作菜單了。此類菜單分為兩類,靜態(tài)...
    請叫我周小帥閱讀 880評論 0 1

友情鏈接更多精彩內(nèi)容