如何使用 Facebook PoP ios 框架水平翻转 UIView?
Posted
技术标签:
【中文标题】如何使用 Facebook PoP ios 框架水平翻转 UIView?【英文标题】:How to flip a UIView horizontally using Facebook PoP ios framework? 【发布时间】:2016-02-07 09:01:50 【问题描述】:我正在使用适用于 ios 的 facebook Pop 框架。 如何使视图水平翻转(在其 Y 轴上)?
这是我的代码:
func buttonClicked(sender: UIButton)
aBoolValue = !aBoolValue
sender.userInteractionEnabled = false
let layer = sender.layer
// First let's remove any existing animations
layer.pop_removeAllAnimations()
layer.removeAllAnimations()
let rotation: POPSpringAnimation = POPSpringAnimation(propertyNamed:kPOPLayerRotationY)
if aBoolValue == true
rotation.toValue = M_PI
sender.setTitle("G", forState: UIControlState.Normal)
else
rotation.toValue = 0
sender.setTitle("P", forState: UIControlState.Normal)
rotation.completionBlock = (anim: POPAnimation! , finished: Bool) -> Void in
layer.pop_removeAllAnimations()
sender.userInteractionEnabled = true
layer.pop_addAnimation(rotation, forKey: "rotation")
这样的结果是按预期翻转,但是大约5-6次翻转后,动画开始随机翻转,不正常。如何以正确的方式水平翻转视图?
【问题讨论】:
为什么没有理由投反对票? 【参考方案1】:这是 pop 库中的一个错误。见https://github.com/facebook/pop/issues/71
人们可以使用UIView.animateWithDuration:
方法创建一些类似的动画。
例如
private func get3DTransformation(angle: Double) -> CATransform3D
var transform = CATransform3DIdentity
transform.m34 = -1.0 / 500.0
transform = CATransform3DRotate(transform, CGFloat(angle * M_PI / 180.0), 0, 1, 0.0)
return transform
private func flipAnimation(view: UIView, completion: (() -> Void) = )
let angle = 180.0
view.layer.transform = get3DTransformation(angle)
UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: .TransitionNone, animations: () -> Void in
view.layer.transform = CATransform3DIdentity
) (finished) -> Void in
completion()
func buttonClicked(sender: UIButton)
aBoolValue = !aBoolValue
if aBoolValue == true
sender.setTitle("G", forState: UIControlState.Normal)
else
sender.setTitle("P", forState: UIControlState.Normal)
flipAnimation(sender)
【讨论】:
以上是关于如何使用 Facebook PoP ios 框架水平翻转 UIView?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS6 上将 Facebook 框架集成到应用程序中?