iPhone6S以上的机型可以支持 3D Touch,可能看起来比较高大上,实际上也没怎么难
(本人也是刚接触,理解的也比较浅,不足之处欢迎指出,大家互相学习)。
3D Touch 有静态标签和动态标签,静态标签就是在info.plist里面直接添加,如下图:
动态标签就是用代码创建:
在AppDelegate.m中添加相关的代码,如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//自定义的图标, 传入自定义的图片名字
UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIconiconWithTemplateImageName:@"public_search"];
//系统自带的图标
UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeShuffle];
UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeAudio];
UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeUpdate];
//创建预览按钮
/*
type : 用来识别是哪个按钮,类似于tag
localizedTitle : 按钮的标题
localizedSubtitle : 按钮子标题
icon : 按钮对应的图标
userInfo : 自定义的数据
*/
UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItemalloc]initWithType:@"one"localizedTitle:@"主页"localizedSubtitle:@"专家"icon:icon1 userInfo:@{@"查找专家" : @"自定义数据"}];
UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItemalloc]initWithType:@"two"localizedTitle:@"专家"localizedSubtitle:nilicon:icon2 userInfo:@{@"查找专家" : @"自定义数据"}];
UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItemalloc]initWithType:@"three"localizedTitle:@"学馆"localizedSubtitle:nilicon:icon3 userInfo:@{@"查找专家" : @"自定义数据"}];
UIMutableApplicationShortcutItem *item4 = [[UIMutableApplicationShortcutItemalloc]initWithType:@"four"localizedTitle:@"自查"localizedSubtitle:nilicon:icon4 userInfo:@{@"查找专家" : @"自定义数据"}];
//添加到预览数组中
application.shortcutItems =@[item1, item2, item3, item4];
returnYES;
}
点击按钮的响应时间也是在AppDelegate.m中处理,类似接收到推送一样,代码如下:
//预览按钮的响应
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler{
UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
//用 shortcutItem.type来识别点击的是哪个按钮
if ([shortcutItem.typeisEqualToString:@"one"]) {
[nav pushViewController:[SearchVCnew] animated:YES];
}
if ([shortcutItem.typeisEqualToString:@"two"]) {
[nav pushViewController:[CustyVCnew] animated:YES];
}
completionHandler(YES);
}
if ([shortcutItem.typeisEqualToString:@"two"]) {
[nav pushViewController:[CustyVCnew] animated:YES];
}
completionHandler(YES);
}
按钮有的布局是 : 文字在左边, 图标在右边; 有的布局是图标在左边,文字在右边,这个是由系统决定的,其实也算人为决定,就是APP排列的位置。
添加的预览按钮个数最多好像是 4个,写的比较随意,大家不要在意细节哈。
附上demo在github的地址 https://github.com/HuaMou/3D-Touch-and-TouchID