iOS 3D touch的基本使用

在我們的app中使用3D Touch功能咏雌,主要分為以下三個模塊:

  1. Home Screen Quick Actions
    通過主屏幕的應(yīng)用Icon凡怎,我們可以用3D Touch呼出一個菜單校焦,進(jìn)行快速定位應(yīng)用功能模塊相關(guān)功能的開發(fā)。如上面的日歷统倒。
  2. peek and pop
    這個功能是一套全新的用戶交互機制寨典,在使用3D Touch時,ViewController中會有如下三個交互階段:
    (1)提示用戶這里有3D Touch的交互房匆,會使交互控件周圍模糊
    (2)繼續(xù)深按耸成,會出現(xiàn)預(yù)覽視圖
    (3)通過視圖上的交互控件進(jìn)行進(jìn)一步交互
    這個模塊的設(shè)計可以在網(wǎng)址連接上進(jìn)行網(wǎng)頁的預(yù)覽交互。
  3. Force Properties
    iOS9為我們提供了一個新的交互參數(shù):力度浴鸿。我們可以檢測某一交互的力度值井氢,來做相應(yīng)的交互處理。例如岳链,我們可以通過力度來控制快進(jìn)的快慢花竞,音量增加的快慢等。

實際的使用方法

Home Screen Quick Actions

有2種添加方式

  1. 靜態(tài)添加
    在info.plist里添加UIApplicationShortcutItems
<array>
    <dict>
        <key>UIApplicationShortcutItemType</key>
        <string>1</string>
        <key>UIApplicationShortcutItemIconType</key>
        <string>1</string>
        <key>UIApplicationShortcutItemTitle</key>
        <string>title</string>
        <key>UIApplicationShortcutItemSubtitle</key>
        <string>subTitle</string>
        <key>UIApplicationShortcutItemIconFile</key>
        <string></string>
        <key>UIApplicationShortcutItemUserInfo</key>
        <string></string>
    </dict>
</array>
</plist>

首先是UIApplicationShortcutItems掸哑,他是一個數(shù)組類型约急,數(shù)組中的每一個元素表示一個入口標(biāo)簽。
然后是Item0苗分,這是數(shù)組中的一個元素厌蔽,字典類型。在這個字典中配置各個標(biāo)簽的相關(guān)屬性摔癣。
UIApplicationShortcutItemType 這個鍵值設(shè)置一個快捷通道類型的字符串 必有項 我們可以監(jiān)聽該項的值來判斷用戶是從哪一個標(biāo)簽進(jìn)入App的奴饮,該字段的值可以為空。
UIApplicationShortcutItemTitle 這個鍵值設(shè)置標(biāo)簽的標(biāo)題 必有項 我們可以監(jiān)聽該項的值來判斷用戶是從哪一個標(biāo)簽進(jìn)入App的
UIApplicationShortcutItemSubtitle 設(shè)置標(biāo)簽的副標(biāo)題 可選項
UIApplicationShortcutItemIconType 設(shè)置標(biāo)簽的圖標(biāo)樣式供填,系統(tǒng)提供了29中樣式的圖標(biāo)拐云,但大部分只能在9.1的系統(tǒng)上使用,只有少數(shù)可以在9.0的系統(tǒng)中使用近她,這一部分會在后邊詳細(xì)介紹 可選項
UIApplicationShortcutItemIconFile 設(shè)置自定義標(biāo)簽圖片文件的路徑 可選項
UIApplicationShortcutItemUserInfo 設(shè)置用戶信息叉瘩,是一個字典類型,可以用來傳值 可選項
2.動態(tài)添加

 UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch];
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"chuan" localizedTitle:@"title" localizedSubtitle:@"" icon:icon1 userInfo:nil];
    [UIApplication sharedApplication].shortcutItems = @[item1];
///3dtouch回調(diào)
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
    if ([shortcutItem.type isEqualToString:@"chuan"]) {
        //執(zhí)行操作
    }
}

peek and pop

首先需要繼承代理<UIViewControllerPreviewingDelegate>
在viewwillappear里判斷是否打開了3d touch功能

 if(self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable){
        self.isOpen3DTouch = YES;
    }

在支持3D Touch的設(shè)備上,用戶可以在程序運行期間通過設(shè)置 -> 通用 -> 輔助功能 -> 3D Touch來關(guān)閉3D Touch功能,所以我們有必要通過重寫-traitCollectionDidChange:方法隨時處理

-(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection{
    
    if(self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable){
        self.isOpen3DTouch = YES;
    }
}

我這里是對cell進(jìn)行的按壓處理
if (self.isOpen3DTouch) { [self registerForPreviewingWithDelegate:self sourceView:cell]; }

#pragma mark - UIViewControllerPreviewingDelegate
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{
    
    //通過預(yù)覽上下文獲取到當(dāng)前按壓的視圖,判斷indexPath值
    NSIndexPath *indexPath = [_boaterTable indexPathForCell:(UITableViewCell *)previewingContext.sourceView];
    
    //通過上下文可以調(diào)整不被虛化的范圍
    previewingContext.sourceRect = CGRectMake(0, 0, kScreenWidth, 102);
    ///這里是需要預(yù)覽的視圖
    GWJobInfoViewController *ivc =[[GWJobInfoViewController alloc] init];
    ivc.title = @"求職信息";
    ivc.model = self.dataArr[indexPath.section];
    ivc.isSearch = YES;
    ivc.touch = ^(NSString *msg){
        [self.view makeToast:msg];
    };
    //可以調(diào)整預(yù)覽視圖的大小
    //    ivc.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, 200);
    return ivc;
}
- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{
    [self showViewController:viewControllerToCommit sender:self];
}

在預(yù)覽是視圖里實現(xiàn)-(NSArray<id<UIPreviewActionItem>> *)previewActionItems此方法,可以實現(xiàn)上拉實現(xiàn)功能

-(NSArray<id<UIPreviewActionItem>> *)previewActionItems
{

    // 生成UIPreviewAction 自定義action
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"邀請加入" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
       
    }];
    //可以有多個功能 以數(shù)組形式返回
    NSArray *actions = @[action1];
    return actions;
}

Force Properties

這個功能目前使用的比較少粘捎,這里就展示個小demo薇缅,按壓改變背景色。

-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//    UITouch *touch = touches.anyObject;
//    
//    /**
//     *  maximumPossibleForce 最大 6.67
//     */
//    NSLog(@"%.2f,%2f",touch.force,touch.maximumPossibleForce); //iOS 9.0之后
//    
//    CGFloat radio = touch.force / touch.maximumPossibleForce;
//    
//    self.view.backgroundColor = [UIColor colorWithRed:radio green:radio blue:radio alpha:1];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末攒磨,一起剝皮案震驚了整個濱河市泳桦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娩缰,老刑警劉巖灸撰,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡浮毯,警方通過查閱死者的電腦和手機完疫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來债蓝,“玉大人壳鹤,你說我怎么就攤上這事∈渭#” “怎么了芳誓?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啊鸭。 經(jīng)常有香客問我锹淌,道長,這世上最難降的妖魔是什么莉掂? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任葛圃,我火速辦了婚禮,結(jié)果婚禮上憎妙,老公的妹妹穿的比我還像新娘。我一直安慰自己曲楚,他們只是感情好厘唾,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著龙誊,像睡著了一般抚垃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趟大,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天鹤树,我揣著相機與錄音,去河邊找鬼逊朽。 笑死罕伯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叽讳。 我是一名探鬼主播追他,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岛蚤!你這毒婦竟也來了邑狸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涤妒,失蹤者是張志新(化名)和其女友劉穎单雾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡硅堆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年蜂奸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硬萍。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡扩所,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朴乖,到底是詐尸還是另有隱情祖屏,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布买羞,位于F島的核電站袁勺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏畜普。R本人自食惡果不足惜期丰,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吃挑。 院中可真熱鬧钝荡,春花似錦、人聲如沸舶衬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逛犹。三九已至端辱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虽画,已是汗流浹背舞蔽。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留码撰,地道東北人渗柿。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像灸拍,于是被迫代替她去往敵國和親做祝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.簡單的介紹一下3D Touch 3D Touch的觸控技術(shù)鸡岗,被蘋果稱為新一代多點觸控技術(shù)混槐。其實,就是此前在Ap...
    Camille_chen閱讀 12,063評論 19 33
  • 專著:http://www.reibang.com/p/3443a3b27b2d 1.簡單的介紹一下3D Touc...
    violafa閱讀 1,017評論 1 0
  • 3D Touch簡介 2015年轩性,蘋果發(fā)布了iOS9以及iphone6s/iphone6s Plus声登,其中最具有創(chuàng)...
    愛恨的潮汐閱讀 386評論 0 2
  • 我是一名大四的985高校的學(xué)生,ok脯厨,so what呢铅祸? 一周有幾天? 這兩天周末我在干嘛合武?忙著補課掙錢临梗。一周有七...
    落11閱讀 595評論 0 0
  • 素凈 典雅 寧謐 自然。懂得欣賞中式裝修的人稼跳,無論社會是多么的浮躁盟庞,她一定能給自己的內(nèi)心尋找一份寧靜安詳。
    紋物閱讀 272評論 0 0