当我在UITextfield中输入文本时,该文本是该视图的子视图的子视图,整个视图会稍微向上移动。
类是一个视图。它有两个子视图,分别是collectionView和带有自己的子视图的视图-UITextfield。
我正在ViewController中从该类创建一个对象,然后直接在其中设置其约束。在该类中设置了其余组件的约束(collectionView和带文本框的视图)。
当我使用panGesture并拖动视图以对UI进行动画处理时,它可以正常工作。但是,当文本输入到文本字段中时,它看起来像重新计算了布局,并且底部约束得到的值比期望值低。
有一个gif显示问题的样子: https://gfycat.com/ColorlessTheseAnophelesmosquito
@objc func draggedView(_ sender:UIPanGestureRecognizer) {
ViewController().view.bringSubviewToFront(self)
let translation = sender.translation(in: ViewController().view)
if self.layer.frame.minY >= UIScreen.main.bounds.height * 0.25 && translation.y > 0 {
//values
self.bottomTaskViewConstraint.constant = -30
self.heightTaskViewContraint.constant = 55
//animation
UIView.animate(withDuration: 0.2) {
self.pinPosition = UIScreen.main.bounds.height * 0.33
self.layer.frame.origin.y = self.pinPosition
self.visibleHeight = ViewController().view.frame.maxY - self.frame.maxY - 20
self.bottomConstraint.constant = self.visibleHeight
self.layoutIfNeeded()
}
self.newTaskTextfield.becomeFirstResponder()
} else if self.layer.frame.minY <= UIScreen.main.bounds.height * 0.33 && self.layer.frame.minY > UIScreen.main.bounds.height * 0.25 && translation.y < 0 {
//values
self.bottomTaskViewConstraint.constant = -100
self.heightTaskViewContraint.constant = 110
//animation
UIView.animate(withDuration: 0.2) {
self.pinPosition = UIScreen.main.bounds.height * 0.25
self.layer.frame.origin.y = self.pinPosition
self.visibleHeight = ViewController().view.frame.maxY - self.frame.maxY - 20
self.bottomConstraint.constant = self.visibleHeight
self.layoutIfNeeded()
}
newTaskTextfield.resignFirstResponder()
}
}
答案 0 :(得分:0)
我修复了它。解: 将self.view.translatesAutoresizingMaskIntoConstraints = false添加到您的ViewController的viewController中的viewDidLoad()中。