首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Facebook PoP ios框架水平翻转PoP?

如何使用Facebook PoP ios框架水平翻转PoP?
EN

Stack Overflow用户
提问于 2016-02-07 09:01:50
回答 1查看 673关注 0票数 1

我正在为iOS使用facebook框架。如何使视图水平翻转(在其Y轴上)?

这是我的代码:

代码语言:javascript
复制
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翻转后,动画开始随机翻转,而不是正常的。如何以正确的方式水平翻转视图?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 07:35:33

这是pop库中的一个bug。请参阅https://github.com/facebook/pop/issues/71

人们可以用UIView.animateWithDuration:方法创建一些类似的动画。

例如

代码语言:javascript
复制
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()
    }
}
代码语言:javascript
复制
func buttonClicked(sender: UIButton) {

    aBoolValue = !aBoolValue
    if aBoolValue == true {
        sender.setTitle("G", forState: UIControlState.Normal)
    } else {
        sender.setTitle("P", forState: UIControlState.Normal)
    }

    flipAnimation(sender)
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35251571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档