iOS開發 3D Touch簡要總結

2021-07-23 04:08:19 字數 2518 閱讀 7928

3d touch是ios9推出的適用於iphone6s(plus),包括剛出的iphone7(plus)以上的機型的功能。

開發主要有4個方面:

- 主介面快捷選單功能 (home screen quick action)

- 預覽圖和重擊功能( uikit peek and pop)

- web view預覽鏈結的頁面(web view peek and pop)

- 檢測3d touch的相對壓力大小(uitouch force properties)

shortcutsubtitle1string>

shortcuttitle1string>

$(product_bundle_identifier).firststring>

firstshorcutkey1key>

firstshortcutkeyvalue1string>

dict>

dict>

array>

-(void)createshortcutitems

localizedtitle:title

localizedsubtitle:nil

icon:icon

userinfo:nil];

}

nsarray

*itemsnames = @[@"拍照", @"聯絡人", @"美化",@"任務"];

nsuinteger index = [itemsnames indexofobject:shortcutitem.localizedtitle];

nslog(@"%@",itemsnames[index]);

}}有三個控制器:1當前控制器 2預覽圖控制器 3重擊時跳轉的控制器(也可以不實現,跳回到第乙個控制器)

在當前控制器實現**uiviewcontrollerpreviewingdelegate;

實現**中的兩個方法分別對應peek和pop;

首先監測3d touch功能是否可用 (可用的話就註冊**uiviewcontrollerpreviewingdelegate)

if ([[[uidevice currentdevice] systemversion] floatvalue] >= 9) 

}

實現peek預覽功能

-(uiviewcontroller *)previewingcontext:(id

)previewingcontext viewcontrollerforlocation:(cgpoint)location

previewingcontext.sourcerect = cell.frame;//突出來的frame,見下圖

zsrpreviewcontroller *vc = [[zsrpreviewcontroller alloc] init];//預覽圖控制器

vc.preferredcontentsize = cgsizemake(kscreenwidth, 200);

vc.index = [indexpath row];

return vc;

}

實現pop重擊功能

在預覽圖控制器覆蓋以下方法有具體的選項功能。

- (nsarray

> *)previewactionitems ];

uipreviewaction *action2 = [uipreviewaction actionwithtitle:@"取消" style:uipreviewactionstyledefault handler:^(uipreviewaction * _nonnull action, uiviewcontroller * _nonnull previewviewcontroller) ];

非常簡單,只需要加上webview.allowslinkpreview = yes;就可以實現該功能了。

附上自己寫的oc例子:

iOS9系列 3DTouch開發

3dtouch 是ios9系統系統下,在iphone6s iphone6s plus 手機上才能夠使用的功能。熟練使用後,發現還是很便捷的。但是模擬器是不支援這個手勢的。只能在真機上進行測試,但是有大神在github開源了乙個外掛程式,以便在模擬器上使用sbshortcutmenusimulator...

iOS新特性之實現3D Touch

第一次寫部落格,具體不太會操作,望大家多多見諒,有何問題隨時聯絡 在網上找了下資料,貌似很少的,只找到一篇簡單介紹的 首先我們需要在 info.plist 檔案中加上一項 keykey array dict keykey string string keykey string share strin...

3d touch 的使用 一

廢話不多說,直接上 在方法裡面判斷,該手機是否是9.0以上,因為3dtouch是9.0以後出的功能 cgfloat currentdeviceversionfloat uidevice currentdevice systemversion floatvalue 判斷版本號,3d touch是從io...