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

我需要其他的东西(一种绘图算法)。如果您不想仅为了获取值而创建隐藏视图,该如何获取纯CGPoint视差运动偏移?

又如何获得此视差运动偏移,使其也可以在iOS 6上运行?

最佳答案

这个答案为时3年。

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

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

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/

10-14 23:31