IOS 特定于设备的开发:获取和使用设备姿势(通过手机方向控制3d物体显示)
2014-12-23 11:56
931 查看
利用设备的机载陀螺仪可以实现,当你旋转手机屏幕时,里面的画面不会随着视图更新而移动,以平衡物理运动。
下面例子利用少量简单的几何变换执行该操作。他建立一个运动管理器,订阅设备运动更新,然后基于运动管理器返回的摇晃,前倾和左右摇摆的角度应用图像变换。
下面例子利用少量简单的几何变换执行该操作。他建立一个运动管理器,订阅设备运动更新,然后基于运动管理器返回的摇晃,前倾和左右摇摆的角度应用图像变换。
@implementation TestBedViewController { CMMotionManager *motionManager; UIImageView *imageView; } - (void) shutDownMotionManager { NSLog(@"Shutting down motion manager"); [motionManager stopDeviceMotionUpdates]; motionManager = nil; } - (void) establishMotionManager { if (motionManager) [self shutDownMotionManager]; NSLog(@"Establishing motion manager"); // Establish the motion manager motionManager = [[CMMotionManager alloc] init]; if (motionManager.deviceMotionAvailable) [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler: ^(CMDeviceMotion *motion, NSError *error) { CATransform3D transform; transform = CATransform3DMakeRotation(motion.attitude.pitch, 1, 0, 0); transform = CATransform3DRotate(transform, motion.attitude.roll, 0, 1, 0); transform = CATransform3DRotate(transform, motion.attitude.yaw, 0, 0, 1); imageView.layer.transform = transform; }]; } - (void) viewDidAppear: (BOOL) animated { NSString *imageName = IS_IPAD ? @"iPadArt.png" : @"iPhoneArt.png"; UIImage *image = [UIImage imageNamed:imageName]; imageView = [[UIImageView alloc] initWithImage:image]; imageView.center = RECTCENTER(self.view.bounds); [self.view addSubview:imageView]; } - (void) loadView { [super loadView]; self.view.backgroundColor = [UIColor whiteColor]; }
相关文章推荐
- iOS 开发 高级:通过AirServer使用AirPlay镜像并实现多屏幕显示控制
- iOS 开发 高级:通过AirServer使用AirPlay镜像并实现多屏幕显示控制
- iOS开发-Object-C获取手机设备信息(UIDevice)
- IOS 特定于设备的开发:获取额外的设备信息
- Cordova - 使用Cordova开发iOS应用实战5(获取手机里照片,并编辑)
- IOS 特定于设备的开发:使用加速器启动屏幕上的对象
- 获取IOS设备当前地址,已验证使用通过
- iOS开发获取手机型号 (设备硬件类型)
- IOS开发 手机联系人获取与使用ABAddressBookRef
- iOS App开发中通过UIDevice类获取设备信息的方法
- iOS开发-新版Xcode在Appdelegate中通过代码控制跳转,不使用系统默认跳转到默认ViewController
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(四)----使用PlayerPrefs存储数据到本地
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(三)----GUI Style与数组的使用
- IOS 特定于设备的开发:使用加速能力“向上定位”
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(九)----使用PreviewLabs插件提速与完整的项目源码
- iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
- 【越狱开发】通过数据线连接使用ssh登陆到iOS 设备
- iOS开发-基础:获取设备UUID,并使用keychain存储
- IOS开发之——OpenUDID的使用获取用户唯一设备
- iOS开发-Swift获取手机设备信息(UIDevice)