You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求iOS可滑动左侧侧边栏(带首页高斯模糊)Objective-C框架

推荐适配Objective-C的iOS侧边栏框架(带高斯模糊效果)

针对你的需求,我整理了几个社区认可度高、完全支持Objective-C的iOS框架,能完美实现左箭头点击/右滑打开左侧侧边栏,同时支持滑动过程中主视图的高斯模糊效果:

1. MMDrawerController

这是一款老牌且稳定的侧边栏框架,文档齐全、自定义性强:

  • 原生支持右滑手势打开左侧侧边栏,同时可轻松绑定左箭头按钮的点击事件来触发侧边栏展开
  • 实现高斯模糊效果:利用框架提供的滑动进度回调,动态控制主视图的模糊强度,示例代码如下:
// 初始化抽屉控制器
MMDrawerController *drawerController = [[MMDrawerController alloc] initWithCenterViewController:centerVC leftDrawerViewController:leftVC];
// 开启右滑打开侧边栏的手势
drawerController.openDrawerGestureModeMask = MMOpenDrawerGestureModePanningCenterView;
drawerController.closeDrawerGestureModeMask = MMCloseDrawerGestureModePanningCenterView;

// 监听滑动进度,添加/更新高斯模糊效果
[drawerController setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) {
    if (percentVisible > 0) {
        UIVisualEffectView *blurView = (UIVisualEffectView *)[drawerController.centerViewController.view viewWithTag:999];
        if (!blurView) {
            blurView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];
            blurView.tag = 999;
            blurView.frame = drawerController.centerViewController.view.bounds;
            [drawerController.centerViewController.view addSubview:blurView];
        }
        blurView.alpha = percentVisible;
    } else {
        // 收起侧边栏时移除模糊视图
        for (UIView *subview in drawerController.centerViewController.view.subviews) {
            if (subview.tag == 999) {
                [subview removeFromSuperview];
            }
        }
    }
}];

2. SWRevealViewController

这款框架是Objective-C生态中流行的侧边栏解决方案,轻量易集成:

  • 内置支持右滑打开左侧侧边栏,可通过revealToggle:方法直接绑定左箭头按钮的点击事件
  • 实现高斯模糊效果:通过KVO监听侧边栏的展开进度,动态调整模糊视图的透明度,示例代码:
// 初始化侧边栏控制器
SWRevealViewController *revealVC = [[SWRevealViewController alloc] initWithRearViewController:leftVC frontViewController:centerVC];

// 绑定左箭头按钮事件
UIBarButtonItem *leftArrowBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"left-arrow"] style:UIBarButtonItemStylePlain target:revealVC action:@selector(revealToggle:)];
centerVC.navigationItem.leftBarButtonItem = leftArrowBtn;

// 监听侧边栏展开进度
[revealVC addObserver:self forKeyPath:@"rearViewPosition" options:NSKeyValueObservingOptionNew context:nil];

// KVO回调处理模糊效果
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
    if ([keyPath isEqualToString:@"rearViewPosition"]) {
        SWRevealViewController *revealVC = (SWRevealViewController *)object;
        CGFloat blurAlpha = revealVC.rearViewPosition / revealVC.rearViewRevealWidth;
        
        UIVisualEffectView *blurView = (UIVisualEffectView *)[centerVC.view viewWithTag:100];
        if (!blurView) {
            blurView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
            blurView.tag = 100;
            blurView.frame = centerVC.view.bounds;
            [centerVC.view addSubview:blurView];
        }
        blurView.alpha = blurAlpha;
    }
}

这两个框架都能很好地匹配你的需求,你可以根据项目的风格和自定义需求选择。如果需要更精细化的效果,也可以基于它们进行二次开发。

内容的提问来源于stack exchange,提问作者Drashti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:32:17