【问题标题】:Animating tableviewcell after I deactivate a constraint of its subview在我停用其子视图的约束后动画 tableviewcell
【发布时间】:2017-12-12 22:58:28
【问题描述】:

我有一个单元格,它有一个固定大小为 n 的 textview。当我按下按钮时,我会停用该高度约束,并且由于为动态单元格大小设置了 tableview,单元格会调整大小。唯一困扰我的是我似乎无法让它动画大小的变化。它相当“二进制”,收缩或扩展。我已经尝试在 indexpath、beginupdates-endupdates 处重新加载行,但我碰壁了。我很感激任何建议。谢谢

【问题讨论】:

    标签: swift autolayout tableview constraints cell


    【解决方案1】:

    当您想要动画约束更改时,您通常可以使用约束更改后跟 UIView.animate(withDuration:1){self.view.layoutIfNeeded() }

    如果您尝试为实际的约束更改设置动画,它将不起作用。

    【讨论】:

      【解决方案2】:

      您可以将layoutIfNeeded() 放置在常规的animate(withDuration...) 方法中,但创建Core Animation 事务允许您使用自定义时序(缓动)曲线。

      CATransaction.begin()
      someViewConstraintDefault.isActive = false
      someViewConstraintNew.isActive = true
      CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(controlPoints: 0.25, 1, 0.25, 1))
      UIView.animate(withDuration: 0.5, animations: { [weak self] in
      
          self?.view.layoutIfNeeded()
      
      })
      CATransaction.commit()
      

      这是构建自定义时序曲线的好工具:http://netcetera.org/camtf-playground.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-21
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 2017-07-17
        • 1970-01-01
        • 2018-06-16
        • 1970-01-01
        相关资源
        最近更新 更多