我在here上读到iOS 7提供了一种简单的方法来获得视差运动偏移。但它也表明您必须将其应用于UIView。
我需要它来做一些不同的事情(绘图算法)。如果您不想仅仅为了获取值而创建隐藏视图,您将如何获得纯CGPoint视差运动偏移?
我怎样才能得到这个视差运动偏移,这样它也能在iOS 6上运行?
发布于 2016-12-16 14:50:20
这个答案太晚了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上不起作用。
https://stackoverflow.com/questions/20176026
复制相似问题