关于3D touch 一些简单实用
来源:互联网 发布:吾生也有涯 知也无涯 编辑:程序博客网 时间:2024/05/18 13:10
一、 3D touch简单使用,一般开发用到两种情况
1、在app图标上使用3D Touch;
2、在程序内使用3D Touch;
现在说一下第一种在app图标上使用3D Touch
这个一般也有两种方法去实现它
1)首先可以在info.plist里面添加一些key在里面进行添加items(静态添加)
步骤:添加一个key为 'UIApplicationShortcutItems'数据类型为Array
再在这个刚刚生成的数组里面添加一个item数据类型为 Dictionary
添加一个Item之后吉给他添加一些关键字(类似属性)一样的东西,下面是属性的解释
UIApplicationShortcutItemType: 快捷可选项的特定字符串(必填)
UIApplicationShortcutItemTitle: 快捷可选项的标题(必填)
UIApplicationShortcutItemSubtitle: 快捷可选项的子标题(可选)
UIApplicationShortcutItemIconType: 快捷可选项的图标(可选)
UIApplicationShortcutItemIconFile: 快捷可选项的自定义图标(可选)
UIApplicationShortcutItemUserInfo: 快捷可选项的附加信息(可选)
好了运行程序就可以看到了,6s以后的手机才有这个功能,当然还有他的回调方法(也就是响应事件)这个在后面一起讲吧
2)UIApplicationShortcutItem这个类代表就是icon 下面的代码一般我是放在appdelegate里面
/*
创建item的方法
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo;
type: 快捷可选项的特定字符串(必填)
localizedTitle: 快捷可选项的标题(必填)
localizedSubtitle: 快捷可选项的子标题(可选)
icon: 快捷可选项的图标(可选) 这个可以自定义图片,我已经在下面列出来了
userInfo: 快捷可选项的附加信息(可选)
*/
//创建
UIApplicationShortcutItem * item1 = [[UIApplicationShortcutItemalloc]initWithType:@"two"localizedTitle:@"分享1"localizedSubtitle:@"尽情分享吧!1"icon:[UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeShare]userInfo:nil];
UIApplicationShortcutItem * item2 = [[UIApplicationShortcutItemalloc]initWithType:@"two"localizedTitle:@"分享2"localizedSubtitle:@"尽情分享吧!2"icon:[UIApplicationShortcutIconiconWithType:UIApplicationShortcutIconTypeShare]userInfo:nil];
UIApplicationShortcutItem * item3 = [[UIApplicationShortcutItemalloc]initWithType:@"two"localizedTitle:@"分享3"localizedSubtitle:@"尽情分享吧!3"icon:[UIApplicationShortcutIconiconWithTemplateImageName:@"xxx.png"]userInfo:nil];
UIApplicationShortcutItem * item4 = [[UIApplicationShortcutItemalloc]initWithType:@"two"localizedTitle:@"分享4"localizedSubtitle:@"尽情分享吧!4"icon:[UIApplicationShortcutIconiconWithTemplateImageName:@"xxx.png"]userInfo:nil];
//添加
[UIApplicationsharedApplication].shortcutItems =@[item1,item2,item3,item4]
这个是图片类型,我是盗来的,保存看看还行
重点来了 ,点击事件之后,没有回调方法也是不行的
在AppDelegate中 添加
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
这个方法就行了,这个方法也不难,最主要是shortcutItem参数,你点击的信息都在里面
我现在举个例子吧,前面一个AController中 tableView的cell空间通过Peek & Pop进入下一个BController
步骤,在AController遵守协议<UIViewControllerPreviewingDelegate>
实现下面两个方法
- (void)previewingContext:(id <UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
[self.navigationController pushViewController:viewControllerToCommit animated:YES];
}
再在你需要使用Peek & Pop功能的控件中实用这个方法 (我是用cell演示的,所以我放在tableView的代理方法里面)
[self registerForPreviewingWithDelegate:self sourceView:cell];
当进入peek的时候(也就是小窗口的时候)会回调下面方法
- (nullable UIViewController *)previewingContext:(id <uiviewcontrollerpreviewing>)previewingContext viewControllerForLocation:(CGPoint)location
{
// previewingContext.sourceView: 触发Peek & Pop操作的视图
// previewingContext.sourceRect: 设置触发操作的视图的不被虚化的区域
BController *bVC = [[BController alloc] init];
// 预览区域大小(可不设置)
detailVC.preferredContentSize = CGSizeMake(0, 300);
return detailVC;
}
当进入Pop状态时,系统会回调如下方法
- (void)previewingContext:(id <uiviewcontrollerpreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit
{
[self.navigationController pushViewController:viewControllerToCommit animated:YES];
}
在Peek时希望提供一些快捷选项,需要在DetailViewController中重写previewActionItems的getter方法
- (NSArray<id<uipreviewactionitem>> *)previewActionItems
{
UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"选项一" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
}];
UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"选项二" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
}];
UIPreviewAction *action3 = [UIPreviewAction actionWithTitle:@"选项三" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
}];
UIPreviewActionGroup *actionGroup = [UIPreviewActionGroup actionGroupWithTitle:@"选项组" style:UIPreviewActionStyleDefault actions:@[action1, action2]];
return @[action1, action2, action3, actionGroup];
}
- 关于3D touch 一些简单实用
- 关于3D Touch
- 关于3D Touch
- iOS 3D Touch简单使用
- iOS开发 3D Touch的简单使用
- IOS 实现3D Touch在tableView的简单应用
- android 简单模仿IOS的3D Touch功能
- 关于3D Touch从app图标快速入口篇.
- 关于3D Touch从app图标快速入口篇.
- 推荐关于解读3D Touch开发的两篇文章
- 3D Touch初探
- 3D Touch大法
- 3D Touch
- ios 3D Touch
- 3D touch
- 3D Touch
- 3D Touch
- iphone 3D Touch
- 查看MySql时间函数:DATE_SUB、DATE_ADD、UNIX_TIMESTAMP等函数的用法
- ActionBar简单实用
- 带你玩转Visual Studio——带你理解微软的预编译头技术
- HDU 2896 病毒侵袭 AC自动机
- 读 给 Android 开发者的 RxJava 详解 笔记
- 关于3D touch 一些简单实用
- neutron availability zones
- 中文API学习文档(持续更新)
- Android 数据库打包随APK发布
- Kali Linux 网络扫描秘籍 第三章 端口扫描(一)
- Activity的滑动返回效果
- Oracle中的事务之savepoint
- 正则表达式整理
- iOS 推送全解析,你不可不知的所有 Tips!