问题描述
我有一个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 (将#修改为@)