github地址: https://github.com/LuckyPia/Flashback
码云地址:https://gitee.com/luckypia/flashback
效果图
前言
iOS的侧滑手势返回很难用有木有,而且只能从左侧返回,因为不是系统级别,也不是强制使用,还有很多App还不支持,只能羡慕Android的手势返回。为了解决该问题而制作的该库,还是希望苹果有一天能够带来系统级别的手势返回。
Install
pod 'Flashback'
Get start
- 启用(必要)
import Flashback
FlashbackManager.shared.isEnable = true
/// 禁用系统提供的手势返回
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
- 可配置
var config = FlashbackConfig.default
// 左右侧启用
config.enablePositions = [.left, .right]
// 触发范围
config.triggerRange = 20
// 震动启用
config.vibrateEnable = true
// 震动强度
config.vibrateStyle = .light
// 指示器样式
config.style = .custom
// 指示器背景颜色
config.backgroundColor = .black
// 指示器图片颜色
config.indicatorColor = .yellow
// 上下滚动开启
config.scrollEnable = true
// 震动启用
config.vibrateEnable = true
// 震动强度
config.vibrateStyle = .light
// 忽略顶部高度(顶部不可侧滑返回)
config.ignoreTopHeight = 150
// ...
FlashbackManager.shared.config = config
- 可重写返回逻辑
extension ViewController {
/// 重写返回
override func onFlashBack() {
super.onFlashBack()
}
}
- 可前置处理(统一处理弹窗,减少代码污染)
FlashbackManager.shared.preFlashback = { [weak self] in
guard let `self` = self else { return true }
// 返回true继续向下执行正常逻辑,返回false终止
return true
}
- 可通知返回,你可以全权接管返回逻辑
// 设置返回模式为通知
FlashbackManager.shared.config.backMode = .notify
// 通知回调
NotificationCenter.default.addObserver(forName: FlashbackManager.FlashbackNotificationName, object: nil, queue: nil) { [weak self] _ in
guard let `self` = self else { return }
// 执行返回逻辑
self.navigationController?.popViewController(animated: true)
}
Existing problems
- 左右两侧有一部分像素用于了侧滑返回判断,所以不可点击,可通过修改triggerRange来改变触发范围大小。
Author
可通过邮件的方式联系我: 664454335@qq.com