更改 UINavigationBar 的模糊效果

Change blurring effect of UINavigationBar

我需要实现一个带有自定义设计的UINavigationBar,需要更改背面图像,需要更改所有颜色,需要更改高度。

我知道这一切都是可能的,但我还需要更改模糊效果。它需要更轻的模糊。有没有一种方法可以在不进入私有 API 的情况下执行此操作?

编辑:它应该是什么样子的图片(我知道状态栏是像素化的,忽略它):

UIVisualEffectView 将在 iOS 8+ 视图中添加半透明和模糊效果。

有 3 个模糊 UIBlurEffectStyles 可用。

- (void)addBlurEffect{

    CGRect bounds = self.navigationController.navigationBar.bounds;
    UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
    visualEffectView.frame = bounds;
    visualEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.navigationController.navigationBar addSubview:visualEffectView];
    self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
    [self.navigationController.navigationBar sendSubviewToBack:visualEffectView];
}

有关 UIVisualEffectView 的更多信息,请查看此 question on SO

*************** 编辑 iOS 7 ************ ***

Nicklockwood's FXBlurViewiOS5iOS6iOS7.

出场救援

我为您创建了一个 sample project,它在 iOS7 的导航栏上具有所需的动态模糊效果。请按照以下指南在您的项目中使用。

  1. 调查AppDelegate.m
  2. 这里我给导航栏加上了背景图。您可以更新任何viewcontroller中的图像以实现导航栏上的动态模糊背景图像。
  3. 很少有 FXblurview 属性,例如 blurRadiusiterationstintColor;你必须 read here.

安装指南:- https://github.com/nicklockwood/FXBlurView?source=c#installation

FXBlurView-master 的完整源代码 可以 found here