| 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
 |