我在视图控制器的下半部分中有一个textview,并且正在动画其最大约束条件,以便在向上滑动/向下滚动时将Y更改为更“全屏”的外观,但是我不知道如何撤消相反,它返回到原始位置
这是我的代码:
@IBOutlet weak var viewAllTextViews: UIView!
@IBOutlet weak var topOfViewAllTextViews: NSLayoutConstraint!
@IBAction func growViewAllTextViews(_ sender: UIPanGestureRecognizer) {
self.topOfViewAllTextViews.constant = -220
UIView.animate(withDuration: 1.0) {
self.view.layoutIfNeeded()
}
}
已更新:
尝试运行更新的代码时出现错误。错误是“在展开一个可选值时意外发现nil”,并且我的调试控制台显示topOfViewAllTextViews =(NSLayoutConstraint?)nil。
以下是我推荐的代码:
@IBAction func growViewAllTextViews(_ sender: UIPanGestureRecognizer) {
let velocity = sender.velocity(in: myView)
if velocity.y > 0 {
self.topOfViewAllTextViews.constant = 0
UIView.animate(withDuration: 1.0) {
self.view.layoutIfNeeded()
}
} else {
self.topOfViewAllTextViews.constant = -215 // error here
UIView.animate(withDuration: 1.0) {
self.view.layoutIfNeeded()
}
}
}
在这里我在情节提要中设置了约束。我有一个身高<=,但删除了它以查看是否可以,但是仍然出现错误。
答案 0 :(得分:1)
您可以使用UIPanGestureRecognizer
的力度检查平移方向。
@IBAction func growViewAllTextViews(_ sender: UIPanGestureRecognizer) {
let velocity = gesture.velocity(in: yourView)
if velocity.y > 0 {
self.topOfViewAllTextViews.constant = 220
UIView.animate(withDuration: 1.0) {
self.view.layoutIfNeeded()
}
} else {
self.topOfViewAllTextViews.constant = -220
UIView.animate(withDuration: 1.0) {
self.view.layoutIfNeeded()
}
}
}