返回

iOS 应用中巧妙打造可拖动导航浮动按钮,解锁便捷导航体验

IOS

在纷繁复杂的应用世界中,清晰便捷的导航功能犹如一盏指路明灯,引领用户畅游应用的各个角落。当应用的规模逐渐庞大,导航的重要性更是不言而喻。在众多常见的导航方式中,UITabBarController、UINavigationBar 堪称标杆。然而,有一种导航方式,虽非 iOS 原生,却凭借其独特魅力而备受青睐——可拖动导航浮动按钮。

可拖动导航浮动按钮的魅力

相较于传统的导航方式,可拖动导航浮动按钮拥有以下独特的优势:

  • 交互灵活性: 用户可以自由拖动浮动按钮至屏幕任意位置,无需拘泥于固定的导航栏或底部栏。
  • 空间优化: 浮动按钮体积小巧,不会占用过多的屏幕空间,为应用内容展示留出更多空间。
  • 快速访问: 浮动按钮始终悬浮在屏幕上方,用户可以在任何界面快速访问它,省去频繁切换页面的繁琐。

从零打造可拖动导航浮动按钮

1. 创建基础浮动按钮

首先,我们创建一个 UIButton 作为浮动按钮:

let floatButton = UIButton()
floatButton.setImage(UIImage(systemName: "plus"), for: .normal)
floatButton.backgroundColor = .blue
floatButton.layer.cornerRadius = 30

2. 添加拖动手势

为了让浮动按钮可拖动,需要添加拖动手势:

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(gesture:)))
floatButton.addGestureRecognizer(panGesture)

3. 处理拖动手势

在处理拖动手势的方法中,实时更新浮动按钮的位置:

@objc func handlePanGesture(gesture: UIPanGestureRecognizer) {
    let translation = gesture.translation(in: self.view)
    floatButton.center = CGPoint(x: floatButton.center.x + translation.x, y: floatButton.center.y + translation.y)
    gesture.setTranslation(.zero, in: self.view)
}

4. 限制拖动范围(可选)

如果需要限制浮动按钮的拖动范围,可以设置边界约束:

// 设置左右边界约束
let leftConstraint = NSLayoutConstraint(item: floatButton, attribute: .left, relatedBy: .greaterThanOrEqual, toItem: self.view, attribute: .left, multiplier: 1, constant: 20)
let rightConstraint = NSLayoutConstraint(item: floatButton, attribute: .right, relatedBy: .lessThanOrEqual, toItem: self.view, attribute: .right, multiplier: 1, constant: -20)
// 设置上下边界约束
let topConstraint = NSLayoutConstraint(item: floatButton, attribute: .top, relatedBy: .greaterThanOrEqual, toItem: self.view, attribute: .top, multiplier: 1, constant: 20)
let bottomConstraint = NSLayoutConstraint(item: floatButton, attribute: .bottom, relatedBy: .lessThanOrEqual, toItem: self.view, attribute: .bottom, multiplier: 1, constant: -20)
// 激活边界约束
NSLayoutConstraint.activate([leftConstraint, rightConstraint, topConstraint, bottomConstraint])

结语

通过这 4 个步骤,我们成功打造了一个可拖动导航浮动按钮。开发者可以根据实际需要对其进行定制,如添加动画、自定义样式等。在 iOS 应用中巧妙运用可拖动导航浮动按钮,将大幅提升用户交互体验,让应用的操作更加顺畅便捷。