iOS10 widget实现3Dtouch 弹出菜单_IOS

文章将依次从以下几个问题着手,进行详细说明:

1、如何为现有的工程添加widget;
2、如何绘制UI;
3、如何调起app;
4、如何与host app共享数据。

图2 添加today的target

图3 添加today之后的工程目录

这是添加Today Extension之后的工程目录。

到这里,为现有的工程添加Today Extension算是完成了,运行程序就可以看到类似图1的简单的效果了,很简单哈。

绘制UI

图4 删除默认创建的MainInterface并修改Info.plist

这里,删除默认创建的MainInterface.storyboard,并按图4所示修改Info.plist文件。(当然,习惯使用storyboard的童鞋可以略过,直接操作storyboar

图5 设置widget展示视图的大小

首先,设置widget展示视图的大小。关于widget的背景色,以及具体展示的内容大家按需绘制,这里暂且不表。

图6 设置widget视图距离左侧边界距离为0

运行程序后,会发现一个问题:绘制的内容与左侧边界有一定距离(约30px)。如何解决这个问题呢,如图6所示,TodayViewController遵守的NCWidgetProviding协议给出了解决方案。

调起app

因为extension和containing app是两个完独立的进程,所以它们之间不能直接通信(不能像应用内部点击按钮,跳转到指定页面)。为了实现widget调起app,这里通过openURL的方式来启动containing app。

- (void)openURLContainingAPP{ //通过extensionContext借助host app调起app [self.extensionContext openURL:[NSURL URLWithString:@"appextension://xxx"] completionHandler:^(BOOL success) { NSLog(@"open url result:%d",success); }];}

数据共享

图7 添加App Groups

通过App Groups提供的同一group内app共同读写区域,可以用NSUserDefaults和NSFileManager两种方式实现extension和containing app之间的数据共享。

1 通过NSUserDefaults共享数据

保存数据

- (void)saveDataByNSUserDefaults{ NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx"]; [shared setObject:@"asdfasdf" forKey:@"widget"]; [shared synchronize];}

读取数据

- (NSString *)readDataFromNSUserDefaults{ NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx"]; NSString *value = [shared valueForKey:@"widget"]; return value;}

2 通过NSFileManager共享数据

保存数据

- (BOOL)saveDataByNSFileManager{ NSError *err = nil; NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx"]; containerURL = [containerURL URLByAppendingPathComponent:@"Library/Caches/widget"]; NSString *value = @"asdfasdfasf"; BOOL result = [value writeToURL:containerURL atomically:YES encoding:NSUTF8StringEncoding error:&err]; if (!result) { NSLog(@"%@",err); } else { NSLog(@"save value:%@ success.",value); } return result;}

读取数据

- (NSString *)readDataByNSFileManager{ NSError *err = nil; NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx"]; containerURL = [containerURL URLByAppendingPathComponent:@"Library/Caches/widget"]; NSString *value = [NSString stringWithContentsOfURL:containerURL encoding:NSUTF8StringEncoding error:&err]; return value;}

    到这里,在Today中添加应用的widget就完成了,从Today中可以浏览预设的快捷服务,在文章iOS 10 Today Widget中接着说iOS 10的适配问题。

以上所述是小编给大家介绍的 iOS10 widget实现3Dtouch 弹出菜单,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索widget
, 弹出菜单
, ios10
, 3dtouch
3Dtouch
mui弹出菜单无法实现、js实现长按 弹出菜单、ios 3d touch widget、3d touch widget、ios10 3dtouch widget,以便于您获取更多的相关知识。

时间: 2024-08-31 17:40:21

iOS10 widget实现3Dtouch 弹出菜单_IOS的相关文章

Android之用PopupWindow实现弹出菜单的方法详解_Android

在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样.它实现更多菜单选项的显示和分栏.其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个GridView控件,一个是菜单标题栏,一个是菜单选项.菜单选项视图的切换可以通过适配器的变换,轻松地实现.点击下载该实例:一.运行截图:             二.实现要点:(1)屏蔽系统弹出的菜单:1.首先创建至少一个系统的菜单选项 复制代码 代码如下: @Override public bo

Android实现类似于PC中的右键弹出菜单效果_Android

 Android系统中的ContextMenu(上下文菜单)类似于PC中的右键弹出菜单,当一个视图注册到一个上下文菜单时,执行一个在该对象上的"长按"动作,将出现一个提供相关功能的浮动菜单.上下文菜单可以被注册到任何视图对象中,不过,最常见的是用于列表视图ListView的item,在按中列表项时,会转换其背景色而提示将呈现上下文菜单. 注意:上下文菜单不支持图标和快捷键. 为了创建一个上下文菜单,你必须重写这个活动的上下文菜单回调函数:onCreateContextMenu() 和

教你如何创建类似QQ的android弹出菜单

大家可能看到android的自带的系统菜单比较难看,如图: 很多应用都自己定义了系统菜单, QQ游览器 手机QQ 我今天做的就是类似手机QQ的菜单,效果图如下: 这是我用PopupWindow重写一个菜单 ,popupwindow实现弹出菜单功能非常实用,在有布局中经常出现,给用户体验非常不错 ,主要是控制菜单的显示和消失(动画控制),另外对文字和图片(大小最好都一样,否则最后效果有点难看)分别做了适配,其中对文字的长度进行了处理. 下面不用多说,进行代码.需要提一下的是,屏蔽一下系统菜单,需要

我的Android进阶之旅------>Android用PopupWindow实现弹出菜单实例

step1:新建项目PopWindow,并导入菜单项使用的图片到/res/drawable目录下               (项目总览图)                                                   (drawable目录截图)        step2:设置应用的UI界面  a.应用的总体界面,main.xml <?xml version="1.0" encoding="utf-8"?> <LinearL

Android PopupWindow实现右侧、左侧和底部弹出菜单_Android

本教程为大家分享了Android PopupWindow弹出菜单的具体代码,供大家参考,具体内容如下 项目代码:http://xiazai.jb51.net/201611/yuanma/PopupLeftMenu(jb51.net).rar 项目SDK是5.1,建议将代码拷到自己的工程中去 代码如下: MainActivity类: package com.example.popupleftmenu; import android.app.Activity; import android.cont

android自定义popupwindow仿微信右上角弹出菜单效果_Android

微信右上角的操作菜单看起来很好用,就照着仿了一下,不过是旧版微信的,手里刚好有一些旧版微信的资源图标,给大家分享一下. 不知道微信是用什么实现的,我使用popupwindow来实现,主要分为几块内容: 1.窗口布局文件:popwin_share.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com

简单实现Android弹出菜单效果_Android

本文实例为大家分享了Android弹出菜单效果的具体代码,供大家参考,具体内容如下 功能描述:用户单击按钮弹出菜单.当用户选择一个菜单项,会触发MenuItemClick事件并让弹出的菜单消失:如果用户在菜单外单击,则直接消失弹出的菜单.当菜单消失时,会引发DismissEvent事件(利用此事件可在菜单消失时做一些后续处理). 1.运行效果   2.添加菜单项 在Resources文件夹下添加一个menu子文件夹,然后在此子文件夹下添加一个名为demo07_popup_menu.xml的文件:

Android使用Activity实现从底部弹出菜单或窗口的方法

本文实例讲述了Android使用Activity实现从底部弹出菜单或窗口的方法.分享给大家供大家参考,具体如下: 这里使用activity实现弹出滑动窗口或菜单,主要是使用了一些设置activity的样式来实现弹出窗口和滑动效果,实现如下: 第一步:设计要弹出窗口的xml布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://sche

Android 中Popwindow弹出菜单的两种方法实例

Android 中Popwindow弹出菜单的两种方法实例 1.popWindow就是对话框的一种方式! 此文讲解的android中对话框的一种使用方式,它叫popWindow. 2.popWindow的特性 Android的对话框有两种:PopupWindow和AlertDialog.它们的不同点在于: AlertDialog的位置固定,而PopupWindow的位置可以随意. AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的. PopupWindow的位置按照有无偏