如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发Facebook POP动效库使用教程

Facebook Pop介绍与使用

如何在 iOS6 上将 Facebook 框架集成到应用程序中?

如何使用 SOCIAL KIT 框架从我的 iOS 应用程序将视频上​​传到 Facebook? [关闭]

iOS不得姐项目--pop框架的初次使用

如何在 iOS 应用程序中集成 Facebook/Google+ 而无需重定向 Safari 浏览器