Unity for iOS 调用UIDatePicker
来源:互联网 发布:java泛型类型擦除 编辑:程序博客网 时间:2024/06/06 01:40
在这里简单,实现一个 Unity for iOS UIDatePicker来输入日期日间的功能。主要有两个方面:1、unity 与 ios的交互、ios下的objective-c的相关api。具体的看代码吧,有些注释。
以后有时间,再弄一个android版的上来。
一,首上一张图:
二,上一个主要的oc代码,基它的可以到demo中找到
//// IOSDatePicker.m// Unity-iPhone//// Created by lzh on 16/2/29.////#import "IOSDatePicker.h"@implementation IOSDatePicker//-(void) showDatePicker//{// UIDatePicker *_dataPicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height-216, [UIScreen mainScreen].bounds.size.width, 216)];// _dataPicker.datePickerMode = UIDatePickerModeDate;// _dataPicker.locale = [[NSLocale alloc]initWithLocaleIdentifier:@"zh_CN"];// [_dataPicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];// [self.view addSubview:_dataPicker];//}////-(void) dateChanged:(id)sender//{// NSLog(@"ios: dataChanged");// NSDate *date = [((UIDatePicker*)sender) date];// NSDateFormatter *dateFormatter =[[NSDateFormatter alloc]init];// [dateFormatter setDateFormat:@"yyyy-MM-dd"];// NSString *strDate = [dateFormatter stringFromDate:date];// UnitySendMessage( "Main Camera", "iosCallback_DatePickerChanged", strDate.UTF8String);//}static IOSDatePicker * na_sharedInstance;+ (id)sharedInstance { if (na_sharedInstance == nil) { na_sharedInstance = [[self alloc] init]; } return na_sharedInstance;}UIDatePicker *datePicker;-(void) showDatePicker{ if (datePicker!=nil) { [self DP_removeViews:nil]; } UIViewController *vc = UnityGetGLViewController(); CGRect toolbarTargetFrame = CGRectMake(0, vc.view.bounds.size.height-216-44, [self GetW], 44); CGRect datePickerTargetFrame = CGRectMake(0, vc.view.bounds.size.height-216, [self GetW], 216); CGRect darkViewTargetFrame = CGRectMake(0, vc.view.bounds.size.height-216-44, [self GetW], 260); UIView *darkView = [[UIView alloc] initWithFrame:CGRectMake(0, vc.view.bounds.size.height, [self GetW], 260)]; darkView.alpha = 1; darkView.backgroundColor = [UIColor whiteColor]; darkView.tag = 9; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(DP_dismissDatePicker:)]; [darkView addGestureRecognizer:tapGesture]; [vc.view addSubview:darkView]; datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, vc.view.bounds.size.height+44, [self GetW], 216)]; datePicker.tag = 10; [datePicker addTarget:self action:@selector(DP_changeDate:) forControlEvents:UIControlEventValueChanged]; datePicker.datePickerMode = UIDatePickerModeDate; [vc.view addSubview:datePicker]; UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, vc.view.bounds.size.height, [self GetW], 44)]; toolBar.tag = 11; toolBar.barStyle = UIBarStyleDefault; UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DP_dismissDatePicker:)]; [toolBar setItems:[NSArray arrayWithObjects:spacer, doneButton, nil]]; [vc.view addSubview:toolBar]; [UIView beginAnimations:@"MoveIn" context:nil]; toolBar.frame = toolbarTargetFrame; datePicker.frame = datePickerTargetFrame; darkView.frame = darkViewTargetFrame; [UIView commitAnimations];}- (void)DP_changeDate:(UIDatePicker *)sender{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: @"yyyy-MM-dd"]; NSString *dateString = [dateFormatter stringFromDate:sender.date]; NSLog(@"--- DateChangedEvent: %@", dateString); UnitySendMessage("IOSToUnityMessageObject", "ios_callback_DatePickerChanged", dateString.UTF8String);}- (void)DP_dismissDatePicker:(id)sender{ UIViewController *vc = UnityGetGLViewController(); [self DP_PickerClosed:datePicker]; CGRect toolbarTargetFrame = CGRectMake(0, vc.view.bounds.size.height, [self GetW], 44); CGRect datePickerTargetFrame = CGRectMake(0, vc.view.bounds.size.height+44, [self GetW], 216); CGRect darkViewTargetFrame = CGRectMake(0, vc.view.bounds.size.height, [self GetW], 260); [UIView beginAnimations:@"MoveOut" context:nil]; [vc.view viewWithTag:9].frame = darkViewTargetFrame; [vc.view viewWithTag:10].frame = datePickerTargetFrame; [vc.view viewWithTag:11].frame = toolbarTargetFrame; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(DP_removeViews:)]; [UIView commitAnimations];}-(void) DP_PickerClosed:(UIDatePicker *)sender{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: @"yyyy-MM-dd"]; NSString *dateString = [dateFormatter stringFromDate:sender.date]; NSLog(@"--- DateChangedEvent: %@", dateString); UnitySendMessage("IOSToUnityMessageObject", "ios_callback_DatePickerChanged", dateString.UTF8String);}- (void)DP_removeViews:(id)object{ if(datePicker==nil) { return; } UIViewController *vc = UnityGetGLViewController(); [[vc.view viewWithTag:9] removeFromSuperview]; [[vc.view viewWithTag:10] removeFromSuperview]; [[vc.view viewWithTag:11] removeFromSuperview];}-(CGFloat) GetW{ UIViewController *vc = UnityGetGLViewController(); bool IsLandscape; UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) { IsLandscape = true; } else { IsLandscape = false; } CGFloat w; if(IsLandscape) { w = vc.view.frame.size.height; } else { w = vc.view.frame.size.width; } //NSLog(@"--- System Version: %@", [UIDevice currentDevice].systemVersion); NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; if ([[vComp objectAtIndex:0] intValue] >= 8) { w = vc.view.frame.size.width; } return w;}@end//------------- called by unity -----begin-----------------#if defined (__cplusplus)extern "C" {#endif// // 创建一个data picker// void _iosOpenDatePicker_Date()// {// UIViewController *vc = UnityGetGLViewController();// IOSDatePicker *myController = [[IOSDatePicker alloc] init];// [vc.view addSubview: myController.view];// // [myController showDatePicker];// }// void _iosOpenDatePicker_Date()// {// UIViewController *vc = UnityGetGLViewController();// // UIDatePicker *_dataPicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(-50, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-216, 216)];// _dataPicker.datePickerMode = UIDatePickerModeDate;// _dataPicker.locale = [[NSLocale alloc]initWithLocaleIdentifier:@"zh_CN"];// [_dataPicker addTarget:vc action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];// [vc.view addSubview:_dataPicker];// } void _iosOpenDatePicker_Date() { [[IOSDatePicker sharedInstance] showDatePicker]; }#if defined (__cplusplus)}#endif//------------- called by unity -----end-----------------
三、u3d demo
下载
0 0
- Unity for iOS 调用UIDatePicker
- Unity调用IOS时间日期控件UIDatePicker
- ios-UIDatePicker
- IOS UIDatePicker
- IOS UIDatePicker
- unity调用ios接口
- Unity iOS 互相调用
- IOS 自定义 UIDatePicker 背景图片
- iOS 控件之 UIDatePicker
- iOS基础 -- UIDatePicker
- iOS之UIDatePicker
- iOS UIDatePicker NSDateFormatter
- iOS 自定义UIDatePicker
- iOS开发UIDatePicker,UIPickerView
- ios UIDatePicker语言设置
- iOS UIDatePicker使用
- iOS 【UIKit-UIDatePicker】
- iOS UIDatePicker 的 用法
- python 入门学习
- Android通知栏多条通知冲突的问题
- iOS开发中如何合理地制造BUG
- 2016寒假训练——搜索
- 修改灰色Bundle ID Bundle Identifier
- Unity for iOS 调用UIDatePicker
- Android View之--获取View大小时机
- 【Git】 添加 ssh key 到 git
- HDU 1016 Prime Ring Problem
- 23种设计模式(java)一
- 关于requirejs和grunt压缩合并是否矛盾
- nyoj组合数
- 结合网上内容,分享一个,java用for循环创建i个对象,的方法
- javax.mail 使用腾讯邮箱发送邮件 代码