要实现view和headerView视图的跟随拖拽效果,需要做以下步骤:

  1. 创建一个UIPanGestureRecognizer手势,并将其添加到headerView上。
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
headerView.addGestureRecognizer(panGesture)
  1. 在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
}
  1. 添加边界限制,确保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将跟随手势的移动而移动,同时受到边界限制

ios view 上有个子viewheaderView 给headerView添加向上向下拖拽手势 view和headerView视图跟随拖拽

原文地址: https://www.cveoy.top/t/topic/iMyU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录