我读过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/