1. 功能支持
3D-Touch 只在 iOS 9 及以上版本得到支持,之前版本的 iOS 并不支持该功能;
3D-Touch 只在 iPhone 6s 及以后型号的 iPhone 或 iPad Pro 上可用,更早的设备并不支持该功能。
2. 添加按钮:a:静态,b:动态,c:点击事件
在info中的添加的是静态的,不可改变;想要自由控制可以用代码添加动态的
各参数意义如下: 1. UIApplicationShortcutItemTitle 按钮标题 2. UIApplicationShortcutItemType 设置标签 icon 类型,当用户调用相应的 Action 的时候,会将该字符串传递给你 App 3. UIApplicationShortcutItemSubtitle 按钮副标题,显示在按钮标题下面的小文字 4. UIApplicationShortcutItemIconType 设置按钮图片为系统图标,更多图标可以参见:https://developer.xamarin.com/api/type/UIKit.UIApplicationShortcutIconType/ 5. UIApplicationShortcutItemUserInfo 该值用来提供 App 的版本信息 6. UIApplicationShortcutItemIconFile 指定 App Bundle 中的文件图片或者是在 Asset Catalog 里面的文件名。注意 icon 应是正方形的,单一的颜色。如果你指定了这个值,系统便会忽略掉对 UIApplicationShortcutItemIconType 的设置,因为这两个值是冲突的,而且开发者自己指定的图片优先级比系统图标更高。
静态VS 动态:
1、优先显示静态添加,总数达到4个不再显示
2、静态使用系统图标,自定义麻烦;动态的可以轻松自定义
3、静态的不可变,但是在动态改变后,静态设置是一直存在的,可以设置固定菜单结合使用
4、动态的可以在任何情况下掉用方法改变,当前显示3D-Touch效果是最后一次改变的
5、动态中自定义 image (2x:70*70 3x:104*104)⚠️:图标显示只有有色(有色区域全是黑色)和透明
a、静态添加:
右键点击工程中的 info.plist 文件选择打开方式为 Source Code: 以 Source Code 方式打开 info.plist 在其中填写如下代码: <key>UIApplicationShortcutItems</key> <array> <dict> <key>UIApplicationShortcutItemIconType</key> <string>UIApplicationShortcutIconTypeLove</string> <key>UIApplicationShortcutItemTitle</key> <string>开始上一次挑战</string> <key>UIApplicationShortcutItemType</key> <string>1</string> </dict> <dict> <key>UIApplicationShortcutItemIconType</key> <string>UIApplicationShortcutIconTypeShuffle</string> <key>UIApplicationShortcutItemTitle</key> <string>最多可以添加4个,后边的不会再显示</string> <key>UIApplicationShortcutItemType</key> <string>0</string> </dict> </array>
b、动态添加:
在需要添加改变的地方添加如下代码:
CGFloat currentDeviceVersionFloat = [[[UIDevice currentDevice] systemVersion] floatValue];
if (currentDeviceVersionFloat >= 9.0) {
// 自定义 image
UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"qq.png"];
//菜单文字
UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"旋转"];
//绑定信息到指定菜单
item1.icon = icon1;
// 系统图标
UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypePlay];
UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"亮点"];
item2.icon = icon2;
[UIApplication sharedApplication].shortcutItems = @[item1,item2];
}
c、点击事件
点击事件的判断,是根据在info\代码中设置的type值;
//3D Touch - (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{ if ([shortcutItem.type isEqualToString:@"0"]) { NSLog(@"info中"); }else if ([shortcutItem.type isEqualToString:@"1"]) { NSLog(@"设置"); } else if ([shortcutItem.type isEqualToString:@"2"]) { NSLog(@"旋转"); } else if ([shortcutItem.type isEqualToString:@"5"]|[shortcutItem.type isEqualToString:@"6"]) { NSLog(@"我在记录界面"); } else if ([shortcutItem.type isEqualToString:@"7"]|[shortcutItem.type isEqualToString:@"8"]) { NSLog(@"我在游戏界面"); } }
值得一提的是,实际的按钮显示的顺序1 2 3,是根据距离图标的距离由近到远1 2 3 排序的,可以尝试把应用拖动到屏幕上边或者下边使用3D Touch。