首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLayoutConstraints的UIViewPropertyAnimator使视图消失

NSLayoutConstraints的UIViewPropertyAnimator使视图消失
EN

Stack Overflow用户
提问于 2019-02-03 12:44:05
回答 1查看 218关注 0票数 0

我在viewDidAppear中有一个这样设置的UIViewPropertyAnimator

代码语言:javascript
复制
if animator == nil {
    animator = UIViewPropertyAnimator(duration: 5.0, curve: .easeInOut, animations: { [weak self] in
        guard let blockSelf = self else { return }
        blockSelf.primaryPromptLabel.alpha = 0
        blockSelf.secondaryPromptLabel.alpha = 0
        blockSelf.backArrowButton.alpha = 1
        NSLayoutConstraint.activate(blockSelf.constraintsToAdd ?? [])
        NSLayoutConstraint.deactivate(blockSelf.constraintsToRemove ?? [])
        blockSelf.view.layoutIfNeeded()
    })
}

我正在使用动画工具在两组相互排斥的约束之间进行插值。我正在使用抽屉的库Pulley,当拖动抽屉时,UIViewPropertyAnimator的fractionComplete会根据用户在滑轮库的drawerChangedDistanceFromBottom函数中向上移动抽屉的程度进行更新,如下所示:

代码语言:javascript
复制
// Extension to clamp a value within bounds
extension ClosedRange {
    func clamp(_ value : Bound) -> Bound {
        return self.lowerBound > value ? self.lowerBound
            : self.upperBound < value ? self.upperBound
            : value
    }
}

// PulleyDrawerViewControllerDelegate in my view controller
func drawerChangedDistanceFromBottom(drawer: PulleyViewController, distance: CGFloat, bottomSafeArea: CGFloat) {
    let bottomSafeSpace = drawer.bottomSafeSpace
    let expandedHeight = drawer.visibleDrawerHeight
    let partialHeight = drawer.partialRevealDrawerHeight(bottomSafeArea: bottomSafeSpace)

    let percentExpanded = (0.0 ... 1.0).clamp(1 * (drawer.drawerDistanceFromBottom.distance-partialHeight) / (expandedHeight-partialHeight))

    animator?.fractionComplete = percentExpanded
}

在用户转到后台并返回应用程序之前,如上所述的过程正在按预期工作。在这一点上,我正在使用约束动画的视图似乎简单地消失了。我看到了另一个问题,表明UIViewPropertyAnimator does strange things with the lifecycle。也许是这样的东西导致了问题?

我也从不启动/结束动画师,我只是在drawerChangedDistanceFromBottom中更新fractionComplete,也许我应该这样做?虽然我不希望动画实际运行5秒的持续时间,但我只想要一个可擦除的动画。

EN

回答 1

Stack Overflow用户

发布于 2019-02-04 00:41:11

我不确定问题的原因,但我添加的约束之一是主要标签和次要标签的高度=0约束。标签也在堆栈视图中。我从堆栈视图中删除了标签,但仍然存在相同的问题。现在,我已经解决了这个问题,将动画更改为用于转换的高度,而不是添加CGAffineTransform =0约束。当使用CGAffineTransform进行缩放时(无论我是否将标签放在堆栈视图中),它都不起作用。

如果有人有更好的建议,请让我知道。

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

https://stackoverflow.com/questions/54500026

复制
相关文章

相似问题

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