动画时,UItextView切成两半-Swift-以编程方式

问题描述

我有一个UITextView,可以使用panGesture识别器移动它: 这是我用来设置的代码:

let customTextView: UITextView = {
        let v = UITextView()
        v.translatesAutoresizingMaskIntoConstraints = false
        v.text = data.text
        v.delegate = self
        v.font = data.font
        v.textColor = data.fontColor
        v.textAlignment = data.alignment
        v.isEditable = false
        v.backgroundColor = .clear
        v.autocorrectionType = .no
        v.isScrollEnabled = false
        v.isSelectable = false
        return v
    }()
    
    
    upperView.addSubview(customTextView)
    customTextView.centerXAnchor.constraint(equalTo: upperView.centerXAnchor).isActive = true
    customTextView.centerYAnchor.constraint(equalTo: upperView.centerYAnchor).isActive = true
    customTextView.widthAnchor.constraint(lessThanOrEqualToConstant: data.width).isActive = true
    customTextView.heightAnchor.constraint(lessThanOrEqualToConstant: data.height).isActive = true
   
    
    let panGesture = UIPanGestureRecognizer(target: self,action: #selector(handlePan))
    panGesture.delegate = self
    customTextView.addGestureRecognizer(panGesture)

当textView视图与另一个视图相交时,我决定为该视图和textView设置动画。 这是平移中动画的代码:

if gestureRecognizer.state == .began || gestureRecognizer.state == .changed {
        textView.removeAllConstraints()
        deletebox.isHidden = false
        let translation = gestureRecognizer.translation(in: self.view)
        // note: 'view' is optional and need to be unwrapped

        textView.center = CGPoint(x: textView.center.x + translation.x,y: textView.center.y + translation.y)
        gestureRecognizer.setTranslation(CGPoint.zero,in: self.view)
        
        if gestureRecognizer.view!.frame.intersects(deletebox.frame) {

            UIView.animate(withDuration: 0.3,delay: 0,options: .curveEaseInOut,animations: {
                textView.transform = .init(scaleX: 0.6,y: 0.6)
                self.deletebox.transform = .init(scaleX: 1.2,y: 1.2)
            },completion: nil)
        } else {

            gestureRecognizer.setTranslation(.zero,in: self.view)
            UIView.animate(withDuration: 0.3,animations: {

                self.deletebox.transform = .identity
                textView.layoutIfNeeded()
                textView.transform = .identity
            },completion: nil)
        }
    }

我注意到 UIView.animate 函数正在使textView切成两半,并且表现得很奇怪,就像无缘无故地不断重新构图。

我尝试插入

textView.layoutIfNeeded()
动画功能中的

,但未更改。您知道可能是什么问题,我该如何解决?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)