【发布时间】:2015-02-04 23:01:32
【问题描述】:
我正在尝试向导航栏和状态栏添加模糊效果。 我的问题是导航栏上的模糊效果很好,但状态栏没有模糊。
我的问题是:如何扩展边界以包含状态栏?
我正在使用以下方法来创建模糊效果:
- (void) addBlurEffect {
CGRect bounds = self.navigationController.navigationBar.bounds;
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];
visualEffectView.frame = bounds;
visualEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.navigationController.navigationBar addSubview:visualEffectView];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
[self.navigationController.navigationBar sendSubviewToBack:visualEffectView];
}
在我的 plist 中,我有基于视图控制器的状态栏外观 YES
在 viewDidLoad 我调用了一个方法:
- (void)configureView {
// style controls
self.addAirportButton.tintColor = [UIColor whiteColor];
// style background image
UIImageView *sidebarBackground = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sidebarBackground"]];
self.tableView.backgroundView = sidebarBackground;
// style navigation bar
self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
// this makes navigation bar transparent
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
// style toolbar
self.navigationController.toolbar.translucent = YES;
self.dismissAdsButton.tintColor = [UIColor whiteColor];
在 viewDidLoad 中没有其他重要的事情完成。 当我构建它时,视图如下所示——它是一个嵌入在 NavigationController 中的 tableViewController,我也在使用出色的 SWRevealViewController。
看看状态栏怎么不模糊:
任何帮助将不胜感激!
更新:
请参阅下面的答案。这是实现的解决方案的屏幕截图:
【问题讨论】:
-
当视图即将首次出现时,您是否尝试过从 viewWillAppear 而不是 viewDidLoad 调用所有这些?
-
我试过了,没有变化,不幸的是。
标签: ios objective-c cocoa-touch ios8