1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #import "RNNStatusBarOptions.h"
- #define kStatusBarAnimationDuration 0.35
- const NSInteger BLUR_STATUS_TAG = 78264801;
- const NSInteger BLUR_TOPBAR_TAG = 78264802;
-
- @implementation RNNStatusBarOptions
-
- - (void)applyOn:(UIViewController *)viewController {
- if (self.blur) {
- UIView* curBlurView = [viewController.view viewWithTag:BLUR_STATUS_TAG];
- if ([self.blur boolValue]) {
- if (!curBlurView) {
- UIVisualEffectView *blur = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];
- blur.frame = [[UIApplication sharedApplication] statusBarFrame];
- blur.tag = BLUR_STATUS_TAG;
- [viewController.view insertSubview:blur atIndex:0];
- }
- } else {
- if (curBlurView) {
- [curBlurView removeFromSuperview];
- }
- }
- }
-
- if (self.style || self.visible) {
- if (self.animate) {
- [UIView animateWithDuration:[self statusBarAnimationDuration] animations:^{
- [viewController setNeedsStatusBarAppearanceUpdate];
- }];
- } else {
- [viewController setNeedsStatusBarAppearanceUpdate];
- }
- }
- }
-
- - (CGFloat)statusBarAnimationDuration {
- return [self.animate boolValue] ? kStatusBarAnimationDuration : CGFLOAT_MIN;
- }
-
- @end
|