ios view 上有个子viewheaderView 给headerView添加向上向下拖拽手势 view和headerView视图跟随拖拽
要实现view和headerView视图的跟随拖拽效果,需要做以下步骤:
- 创建一个UIPanGestureRecognizer手势,并将其添加到headerView上。
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
headerView.addGestureRecognizer(panGesture)
- 在handlePanGesture方法中获取手势的偏移量,并将其应用到headerView的位置。
@objc func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
let translation = gesture.translation(in: self.view)
gesture.setTranslation(CGPoint.zero, in: self.view)
// 更新headerView的位置
headerView.frame.origin.y += translation.y
}
- 添加边界限制,确保headerView不会移出指定的范围。
@objc func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
let translation = gesture.translation(in: self.view)
gesture.setTranslation(CGPoint.zero, in: self.view)
var newOriginY = headerView.frame.origin.y + translation.y
newOriginY = max(newOriginY, 0) // 最小为0,不能向上拖拽出view
newOriginY = min(newOriginY, view.bounds.height - headerView.bounds.height) // 最大为(view高度 - headerView高度),不能向下拖拽出view
// 更新headerView的位置
headerView.frame.origin.y = newOriginY
}
这样,当用户在headerView上进行拖拽操作时,headerView将跟随手势的移动而移动,同时受到边界限制
原文地址: https://www.cveoy.top/t/topic/iMyU 著作权归作者所有。请勿转载和采集!