Cocos2d-x 添加iOS7默认分享/AirDrop
猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢!
原文地址: http://www.cocos2dev.com/?p=530
下午添加分享的时候,看着这么多第三方sdk,我还是喜欢ios7默认的分享功能,简洁大方。它也能显示你已安装的社交app。
下面我说下如何在cocos2dx里面使用。
下面是封装好的IOSShareManager.h/m ,这个是一个oc单例类,负责调用分享和保存rootViewController。代码很少,看注释就可以了明白了。
IOSShareManager.h
// // IOSShareManager.h // IOS7ShareSample // // Created by LiuYanghui on 14-3-22. // // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface IOSShareManager : NSObject + (IOSShareManager *) getInstance; - (void)share:(CGPoint)pos; @property (nonatomic, readwrite, retain) id viewController; @end
IOSShareManager.m
//
// IOSShareManager.m
// IOS7ShareSample
//
// Created by LiuYanghui on 14-3-22.
//
//
#import "IOSShareManager.h"
@interface IOSShareManager()
@property (strong, nonatomic) UIPopoverController *activityPopover;
@end
@implementation IOSShareManager
+ (IOSShareManager *) getInstance
{
static IOSShareManager* gameMgr = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
gameMgr = [[self alloc] init];
});
return gameMgr;
}
- (void)share:(CGPoint)pos
{
// 你可以先截屏保存到document下,这里的image读取document下面。
UIImage *image = [UIImage imageNamed:@"HelloWorld.png"];
NSString *mesg = @"You can add some description info here!";
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image, mesg] applicationActivities:nil];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
//iPhone 从底部向上滑出view
[self.viewController presentViewController:activityViewController animated:YES completion:nil];
} else {
//iPad, 弹出view
if (![self.activityPopover isPopoverVisible]) {
self.activityPopover = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[self.activityPopover presentPopoverFromRect:CGRectMake(pos.x, pos.y, 0, 0) inView:((UIViewController *)self.viewController).view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
} else {
//Dismiss view,当重复点击时
[self.activityPopover dismissPopoverAnimated:YES];
}
}
}
- (id)init
{
self = [super init];
if (self) {
// init code here
}
return self;
}
- (void) dealloc
{
[super dealloc];
}
@end
上面的是oc的类,下面添加中间层接口,供cpp调用。IOSShare.h/mm 就是我们需要添加的中间层类方法。
IOSShare.h
//
// IOSShare.h
// IOS7ShareSample
//
// Created by LiuYanghui on 14-3-22.
//
//
#ifndef __IOS7ShareSample__IOSShare__
#define __IOS7ShareSample__IOSShare__
class IOSShare {
public:
/*! @brief share
*
* 显示分享view,如果是ipad,则从设置位置弹出view
* @param posX
* @param posY
*/
static void share(float posX, float posY);
};
#endif /* defined(__IOS7ShareSample__IOSShare__) */
IOSShare.mm
//
// IOSShare.cpp
// IOS7ShareSample
//
// Created by LiuYanghui on 14-3-22.
//
//
#include "IOSShare.h"
#import "IOSShareManager.h"
void IOSShare::share(float posX, float posY)
{
[[IOSShareManager getInstance] share:CGPointMake(posX, posY)];
}
ok,下面就是如何使用。
第一步:设置IOSShareManager 的rootViewController。
请在AppController.mm,添加:#import “IOSShareManager.h”, 并在下面函数中设置IOSShareManager 的rootViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ....
[[IOSShareManager getInstance] setViewController:viewController];
}
第二步:cpp中调用分享,参数坐标当在ipad下的时候,以该坐标为弹出点,弹出分享视图。
IOSShare::share(300, 300);
Cocos2d-x 添加iOS7默认分享/AirDrop的更多相关文章
- Android中通过ActionBar为标题栏添加搜索以及分享视窗
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.Action ...
- hibernate添加数据,默认字段为null的问题解决
数据库中的一个字段默认为0,但是在用hibernate的添加之后,默认字段竟然不是0,为NULL. 查了一下.发现想要让默认字段生效.需要在*.hbm.xml添加一些参数,如下.(红色部分) dyna ...
- chrome浏览器当表单自动填充时,怎么去除浏览器自动添加的默认样式。
参考blog来自 http://segmentfault.com/q/1010000000671971 chrome浏览器当表单自动填充时,怎么去除浏览器自动添加的默认样式. 一.发现该问题的原因-是 ...
- JDK8新特性,给接口添加一个默认实现
在JDK8中,允许给接口本身添加一个默认的实现.用“default”进行修饰.如下实例 package interfacetest; public interface TestInterface { ...
- 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 && 一般的浏览器input和button的高度不一致问题
解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 如果我们把一个表单设置位 autofocus ,这时这个表单在获取焦点后就会产生淡黄色的背景,我们就是使用!importa ...
- 给Cocos2D视图添加手势支持
见如下代码: UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc]initWithTarget:self ac ...
- ES6解构过程添加一个默认值和赋值一个新的值
const info = { name: 'xiaobe', } const { name: nickName = '未知' } = info; 其中nickName是解构过程中新声明的一个变量,并且 ...
- 【jquery基础】 jquery.manifest用法:通过后台查询and添加到默认项
今天做一个东西 效果如下: 后台已经保存了006这个SN码,现在需要查到了这个人(杨小婷),然后作为默认值,展示到 manifest 里面 <script> $(document).rea ...
- Liferay 6.2 改造系列之四:重新整理Application添加页面默认提供的Portlet清单
经过2.3两步后,剩余Portlet已经不多,添加Application页面如下: 将用不到的Portlet隐藏起来:11 Portal目录 (Portal Directory) 将内嵌Protl ...
随机推荐
- hdu2669与hdu1576(扩展欧几里德)
模板: int Extend_Euclid(int a, int b, int &x, int &y){ if(b == 0){ x = 1; ...
- poj 1113 凸包周长
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33888 Accepted: 11544 Descriptio ...
- AspNetCoreApi 跨域处理
AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源,所以在调用WebApi 接口时不能成功 ...
- STM8操作LCD5110总结
附上一小段代码: void LCD_init(void) { // 产生一个让LCD复位的低电平脉冲 //LCD_RST = 0; GPIO_WriteLow(LCD_PORTG, LCD_RST); ...
- Python中如何自定义一个计时器
import time as t class MyTimer(): # 初始化构造函数 def __init__(self): self.prompt = "未开始计时..." s ...
- Android查缺补漏(线程篇)-- IntentService的源码浅析
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8975114.html 在Android中有两个比较容易弄混的概念,Servic ...
- 安卓7.1 新特性Shortcut
介绍 Shortcut 是谷歌在API25提出来的 类似苹果3D touch 但是没有压力感应.在安卓中完全就是长按. 来看下效果吧: 是不是很赞? 那么请随本文一起学习吧 更新 新建项目 在你项目下 ...
- Dynamics CRM2016 Update or Create parentcustomerid in Contact using web api
联系人实体中有个特殊的字段parentcustomerid 在通过web api创建或更新记录时,如果在给这个字段赋值时当做查找字段对待的话,那你就会遇到问题了,报错信息如下 正确的赋值方式如下
- Swift完成fizz buzz test
看到一篇文章上说,很多貌似看过很多本编程书的童鞋连简单的fizz buzz测试都完不成. 不知道fizz buzz test为何物的,建议自行搜之. 测试要求是,编写满足以下条件的代码: Write ...
- J2EE进阶(十九)FileNotFoundException: http://hibernate.org/dtd/hibernate-mapping-3.0.dtd
J2EE进阶(十九)Nested exception: java.io.FileNotFoundException: http://hibernate.org/dtd/hibernate-mappin ...