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