《iOS 6高级开发手册(第4版)》——1.11节秘诀:获取和使用设备姿势

简介:

本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.11节秘诀:获取和使用设备姿势,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.11 秘诀:获取和使用设备姿势
iOS 6高级开发手册(第4版)
设想有一部iPad放在桌子上。iPad上显示了一幅图像,可以弯曲并查看它。现在,设想旋转那个iPad,就像它平放在桌子上一样,但是当iPad移动时,图像不会移动。它保持与周围的世界完美对齐。无论怎样旋转iPad,图像都不会随着视图更新而“移动”,以平衡物理运动。这就是秘诀1-7的工作方式,利用设备的机载陀螺仪(这是必需的),使这个秘诀工作。

无论怎样握持设备,图像都会调整。除了这种水平操作,还可以拾起设备并在空间中定位它的方向。如果在手中翻转设备并查看它,就会看到图像的颠倒的“底部”。还可以沿着两根轴倾斜它:一根是从Home按钮指向照相机,另一根则从照相机与Home按钮的中点开始穿过iPad的表面。还有一根轴,它是你最先探讨过的,从设备的中间开始,指向设备上方的空间,并且穿过它下面的中点。在操纵设备时,图像会做出响应,在那个iPad内创建一个可视化的静态世界。

秘诀1-7显示了如何利用少量简单的几何变换来执行该操作。它建立了一个运动管理器,订阅设备运动更新,然后基于运动管理器返回的摇晃、前倾和左右摇摆的角度应用图像变换。

秘诀1-7 使用设备运动更新修正空间里的图像

- (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;
    }];
}
相关文章
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
是否有其他框架可以在iOS设备上进行机器学习?
是否有其他框架可以在iOS设备上进行机器学习?
21 1
|
3月前
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
33 1
|
3月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
19 0
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
27 0
|
3月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
101 0
|
6月前
|
iOS开发 开发者
Xcode7.2真机调试iOS 9.3的设备
Xcode7.2真机调试iOS 9.3的设备
109 0
|
7月前
|
iOS开发
iOS 获取设备-语言,版本,国家
iOS 获取设备-语言,版本,国家
97 0
|
7月前
|
网络安全 iOS开发 开发者
frida环境配置、以及如何脱壳iOS包并安装到非越狱设备-制作iOS任意App分身
frida环境配置、以及如何脱壳iOS包并安装到非越狱设备-制作iOS任意App分身
980 1
|
8月前
|
网络协议 数据安全/隐私保护 iOS开发
Cisco设备的简介和IOS的备份、恢复、升级
在使用路由器、交换机的过程中,lOS的备份,恢复和升级是网络管理员的重要工作。
205 0
|
11月前
|
iOS开发
iOS设备支持的ARM平台
iOS设备支持的ARM平台
65 0