首页 > 代码库 > IOS 特定于设备的开发:获取和使用设备姿势(通过手机方向控制3d物体显示)
IOS 特定于设备的开发:获取和使用设备姿势(通过手机方向控制3d物体显示)
利用设备的机载陀螺仪可以实现,当你旋转手机屏幕时,里面的画面不会随着视图更新而移动,以平衡物理运动。
下面例子利用少量简单的几何变换执行该操作。他建立一个运动管理器,订阅设备运动更新,然后基于运动管理器返回的摇晃,前倾和左右摇摆的角度应用图像变换。
@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 特定于设备的开发:获取和使用设备姿势(通过手机方向控制3d物体显示)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。