79 lines
2.1 KiB
Objective-C
79 lines
2.1 KiB
Objective-C
#import "BlurView.h"
|
|
#import "BlurEffectWithAmount.h"
|
|
|
|
@interface BlurView ()
|
|
|
|
@end
|
|
|
|
@implementation BlurView
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
if (self = [super initWithFrame:frame]) {
|
|
self.blurEffectView = [[UIVisualEffectView alloc] init];
|
|
self.blurEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
|
|
self.blurEffectView.frame = frame;
|
|
|
|
self.blurAmount = @10;
|
|
self.blurType = @"dark";
|
|
[self updateBlurEffect];
|
|
|
|
self.clipsToBounds = true;
|
|
|
|
[self addSubview:self.blurEffectView];
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void)layoutSubviews
|
|
{
|
|
[super layoutSubviews];
|
|
self.blurEffectView.frame = self.bounds;
|
|
}
|
|
|
|
- (void)setBlurType:(NSString *)blurType
|
|
{
|
|
if (blurType && ![self.blurType isEqual:blurType]) {
|
|
_blurType = blurType;
|
|
[self updateBlurEffect];
|
|
}
|
|
}
|
|
|
|
- (void)setBlurAmount:(NSNumber *)blurAmount
|
|
{
|
|
if (blurAmount && ![self.blurAmount isEqualToNumber:blurAmount]) {
|
|
_blurAmount = blurAmount;
|
|
[self updateBlurEffect];
|
|
}
|
|
}
|
|
|
|
|
|
- (UIBlurEffectStyle)blurEffectStyle
|
|
{
|
|
if ([self.blurType isEqual: @"xlight"]) return UIBlurEffectStyleExtraLight;
|
|
if ([self.blurType isEqual: @"light"]) return UIBlurEffectStyleLight;
|
|
if ([self.blurType isEqual: @"dark"]) return UIBlurEffectStyleDark;
|
|
|
|
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 /* __IPHONE_10_0 */
|
|
if ([self.blurType isEqual: @"regular"]) return UIBlurEffectStyleRegular;
|
|
if ([self.blurType isEqual: @"prominent"]) return UIBlurEffectStyleProminent;
|
|
#endif
|
|
|
|
#if TARGET_OS_TV
|
|
if ([self.blurType isEqual: @"regular"]) return UIBlurEffectStyleRegular;
|
|
if ([self.blurType isEqual: @"prominent"]) return UIBlurEffectStyleProminent;
|
|
if ([self.blurType isEqual: @"extraDark"]) return UIBlurEffectStyleExtraDark;
|
|
#endif
|
|
|
|
return UIBlurEffectStyleDark;
|
|
}
|
|
|
|
- (void)updateBlurEffect
|
|
{
|
|
UIBlurEffectStyle style = [self blurEffectStyle];
|
|
self.blurEffect = [BlurEffectWithAmount effectWithStyle:style andBlurAmount:self.blurAmount];
|
|
self.blurEffectView.effect = self.blurEffect;
|
|
}
|
|
|
|
@end
|