iOS26LegacyUIPatcher 是一个用于适配 iOS 26 行为变化的 UIKit 兼容性 Pod。目标是令 iOS 26 上的系统UI组件可以表现得与低版本一致。
- 通过OC方法交换技术,实现无侵入式适配,只需源码引入本pod即可
- 依赖RSSwizzle
- 仅供交流学习使用
以下所有逻辑仅在 +[iOS26LegacyUIPatcher enable] 返回 YES 时生效。
- 实现:关闭 iOS 26 新增的滚动边缘视觉效果
- 原理:
- hook
[UIScrollEdgeEffect isHidden]为YES
- hook
- 实现:关闭 iOS 26 新增的按钮背景视觉效果
- 原理:
- hook
[UIBarButtonItem hidesSharedBackground]为YES - hook
[UIBarButtonItem sharesBackground]为NO
- hook
-
实现:关闭 iOS 26 新增的液态玻璃交互
-
原理:
- hook
[UITabBar addSubview:],将系统添加的_UITabBarPlatterView设为隐藏 - hook
[UITabBar addGestureRecognizer:],将系统添加的_UIContinuousSelectionGestureRecognizer设为disable
- hook
-
实现:还原低版本hidesBottomBarWhenPushed系统动画行为
-
原理:
- hook
[UIViewController hidesBottomBarWhenPushed],返回NO - hook
[UIViewController setHidesBottomBarWhenPushed:],记录设置并通过[UIViewController customHidesBottomBarWhenPushed]对外返回 - 在
UINavigationController转场时,插入自定义tabbar转场。将tabbar截图后贴在fromVC或toVC实现。- hook
pushViewController、popViewControllerAnimated、popToViewController、popToRootViewControllerAnimated、setViewControllers
- hook
- hook
base:总开关UIScrollView:UIScrollView兼容UINavigationBar:UINavigationBar兼容UITabBar:UITabBar兼容
默认安装包含全部 subspec。
在 Podfile 中添加:
pod 'iOS26LegacyUIPatcher'或指定 subspec:
pod 'iOS26LegacyUIPatcher', :subspecs => ['UITabBar']liuzhe1117
iOS26LegacyUIPatcher 基于 MIT 协议发布,详见 LICENSE 文件。