ios - 如何在支持 iOS 6 的情况下获得类似于 iOS 7 主屏幕的视差运动偏移?

标签 ios iphone ios7 parallax

我读了here iOS 7 提供了一种获取视差运动偏移量的简单方法。但它也表明您必须将它应用于 UIView。

我需要它来做一些不同的事情(绘图算法)。如果您不想为了获取值而创建隐藏 View ,您将如何获取纯 CGPoint 视差运动偏移量?

我怎样才能得到这个视差运动偏移,以便它也能在 iOS 6 上运行?

最佳答案

这个答案晚了 3 年。

但是,您可以子类化 UIMotionEffect 并覆盖 keyPathsAndRelativeValues(forViewerOffset:) 并根据查看者的观看位置实现您想要应用于 View 的任何效果。

参数 viewerOffset 提供了一个 UIOffset 的实例,它将为您提供查看器的查看偏移量。您需要返回一个字典,其中 keyPaths 作为键,您根据 viewerOffset 计算的相应值作为 View 的任何可动画属性的值。

import UIKit

class CustomMotionEffect: UIMotionEffect {

    override func keyPathsAndRelativeValues(forViewerOffset viewerOffset: UIOffset) -> [String : Any]? {
        var motionEffectDictionary = [String : Any]()

        //Horizontal
        if viewerOffset.horizontal > 0 { //Device tilted right

        } else if viewerOffset.horizontal < 0 { //Device tilted leftß

        } else {//Device horizontally perpendicular

        }

        //Vertical
        if viewerOffset.vertical > 0 { //Device tilted down

        } else if viewerOffset.vertical < 0 { //Device tilted up

        } else { //Device vertically perpendicular

        }
        return motionEffectDictionary
    }

}

这样做将确保您可以控制效果的行为方式。但是,这不适用于 iOS6。

关于ios - 如何在支持 iOS 6 的情况下获得类似于 iOS 7 主屏幕的视差运动偏移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20176026/

相关文章:

iphone - 遍历 iPhone 中的控件

java - libgdx:屏幕键盘上的 IOS 未持续触发事件

ios - 如何在两点之间设置Monotouch map

ios - 使用 Google Translate API 在 iOS 中翻译多个字符串

iphone - 在应用程序设置中设置 iPhone 应用程序语言有效,但应用程序名称不会更改

iphone - cocos2d iphone - 游戏架构: physics VS.代码模拟 Sprite 行为

android - Appcelerator Titanium 国际化无法正常工作

objective-c - 从 PLIST 中获取数据到表 3

uitableview - iOS 7 UITableViewCell 临时剪辑

ios - iOS7 设备可以充当 iBeacon 吗?