《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;
    }];
}
相关文章
|
8月前
|
Android开发 iOS开发 UED
探索未来:Android与iOS在智能穿戴设备上的较量
随着科技的飞速进步,智能穿戴设备已经成为我们日常生活中不可或缺的一部分。本文将深入探讨两大操作系统——Android和iOS——在智能穿戴领域的竞争与发展,分析它们各自的优势与挑战,并预测未来的发展趋势。通过比较两者在设计哲学、生态系统、用户体验及创新技术的应用等方面的差异,揭示这场较量对消费者选择和市场格局的影响。 【7月更文挑战第31天】
89 0
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
是否有其他框架可以在iOS设备上进行机器学习?
是否有其他框架可以在iOS设备上进行机器学习?
70 1
|
10月前
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
167 1
|
10月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
164 0
|
7月前
|
运维 网络安全 iOS开发
厉害!外国网络工程师用Ansible给思科IOS设备升级!
厉害!外国网络工程师用Ansible给思科IOS设备升级!
|
7月前
|
BI Linux 数据安全/隐私保护
忘了 iOS(iPad、IPhone) 设备上的「屏幕使用时间」密码怎么办?找回屏幕密码
忘了 iOS(iPad、IPhone) 设备上的「屏幕使用时间」密码怎么办?找回屏幕密码
252 0
|
8月前
|
Android开发 数据安全/隐私保护 iOS开发
探索未来:安卓与iOS在智能穿戴设备领域的较量
随着科技的飞速发展,智能穿戴设备已逐渐成为我们日常生活的一部分。从健康监测到通讯交流,它们正以惊人的速度改变着我们的生活方式。本文将深入探讨安卓和iOS这两大操作系统在智能穿戴领域的现状、竞争以及未来发展趋势,揭示它们如何通过创新技术满足用户需求,并预测未来可能的发展方向。
77 0
|
10月前
|
设计模式 定位技术 开发工具
探索iOS开发:从初级到高级的旅程
本文将深入探讨iOS开发的各个方面,从基础知识到高级技术,以及如何从初级开发者成长为高级开发者。我们将讨论各种工具、技术和策略,以帮助你在iOS开发领域取得成功。无论你是刚刚开始学习iOS开发,还是已经有一些经验并希望提升你的技能,这篇文章都将为你提供有价值的信息和建议。
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
279 0
|
10月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
161 0