代码之家  ›  专栏  ›  技术社区  ›  Chris

(缩放)UITextView上的变换动画

  •  0
  • Chris  · 技术社区  · 7 年前

    UITextView 嵌套在 UIView

    当卡片出现时 UITextView视图

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        DispatchQueue.main.async {
            UIView.animate(withDuration: 1, delay: 0.1, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.8, options: .curveEaseOut, animations: {
                self.cardView.transform = CGAffineTransform(scaleX: 1, y: 1)              
                self.messageTextView.transform = CGAffineTransform(scaleX: 1, y: 1)  
            }, completion: nil)            
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        cardView.transform = CGAffineTransform(scaleX: 0, y: 0)
        messageTextView.transform = CGAffineTransform(scaleX: 0, y: 0)
    }
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   E.Coms    7 年前

    我不确定确切的设置,所以显示故事板。我没有添加约束,而是在动画之前设置NeedsLayout。希望对你有用。

    enter image description here

              override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            DispatchQueue.main.async {
                self.messageTextView.setNeedsLayout()
                UIView.animate(withDuration: 1, delay: 0.1, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.8, options: .curveEaseOut, animations: {
                    self.cardView.transform = CGAffineTransform(scaleX: 1, y: 1)
                    self.messageTextView.transform = CGAffineTransform(scaleX: 1, y: 1)
                }, completion: nil)
            }
        }
    

    enter image description here

        2
  •  0
  •   Community Mohan Dere    6 年前

    UITextView 或者它们折叠到零大小并且不可见。

    还要注意的是,对于较小的尺寸,应该使用较小的非零比例值,如0.01,而不是0,至少对于缩小视图来说是这样。如果尝试将视图的缩放设置为零,则视图将消失,而不是缩小。

    我还尝试了弹簧阻尼动画,发现 usingSpringWithDamping: 0.7, initialSpringVelocity: 0.8 你使用的弹簧效果几乎不明显。如果我将阻尼调低到0.5,反弹效果会更好,但是当设置视图收缩的动画时,视图比例会超过0比例,并且会稍微上下颠倒地增长。