mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-08-25 11:55:28 -04:00
added files via upload
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
//
|
||||
// FLEXKBToolbarButton.m
|
||||
// FLEX
|
||||
//
|
||||
// Created by Tanner on 6/11/17.
|
||||
// Copyright © 2017 Tanner Bennett. All rights reserved.
|
||||
//
|
||||
|
||||
#import "FLEXKBToolbarButton.h"
|
||||
#import "UIFont+FLEX.h"
|
||||
#import "FLEXUtility.h"
|
||||
#import "CALayer+FLEX.h"
|
||||
|
||||
@interface FLEXKBToolbarButton ()
|
||||
@property (nonatomic ) NSString *title;
|
||||
@property (nonatomic, copy) FLEXKBToolbarAction buttonPressBlock;
|
||||
/// YES if appearance is set to `default`
|
||||
@property (nonatomic, readonly) BOOL useSystemAppearance;
|
||||
/// YES if the current trait collection is set to dark mode and \c useSystemAppearance is YES
|
||||
@property (nonatomic, readonly) BOOL usingDarkMode;
|
||||
@end
|
||||
|
||||
@implementation FLEXKBToolbarButton
|
||||
|
||||
+ (instancetype)buttonWithTitle:(NSString *)title {
|
||||
return [[self alloc] initWithTitle:title];
|
||||
}
|
||||
|
||||
+ (instancetype)buttonWithTitle:(NSString *)title action:(FLEXKBToolbarAction)eventHandler forControlEvents:(UIControlEvents)controlEvent {
|
||||
FLEXKBToolbarButton *newButton = [self buttonWithTitle:title];
|
||||
[newButton addEventHandler:eventHandler forControlEvents:controlEvent];
|
||||
return newButton;
|
||||
}
|
||||
|
||||
+ (instancetype)buttonWithTitle:(NSString *)title action:(FLEXKBToolbarAction)eventHandler {
|
||||
return [self buttonWithTitle:title action:eventHandler forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
|
||||
- (id)initWithTitle:(NSString *)title {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_title = title;
|
||||
self.layer.shadowOffset = CGSizeMake(0, 1);
|
||||
self.layer.shadowOpacity = 0.35;
|
||||
self.layer.shadowRadius = 0;
|
||||
self.layer.cornerRadius = 5;
|
||||
self.clipsToBounds = NO;
|
||||
self.titleLabel.font = [UIFont systemFontOfSize:18.0];
|
||||
self.layer.flex_continuousCorners = YES;
|
||||
[self setTitle:self.title forState:UIControlStateNormal];
|
||||
[self sizeToFit];
|
||||
|
||||
if (@available(iOS 13, *)) {
|
||||
self.appearance = UIKeyboardAppearanceDefault;
|
||||
} else {
|
||||
self.appearance = UIKeyboardAppearanceLight;
|
||||
}
|
||||
|
||||
CGRect frame = self.frame;
|
||||
frame.size.width += title.length < 3 ? 30 : 15;
|
||||
frame.size.height += 10;
|
||||
self.frame = frame;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)addEventHandler:(FLEXKBToolbarAction)eventHandler forControlEvents:(UIControlEvents)controlEvent {
|
||||
self.buttonPressBlock = eventHandler;
|
||||
[self addTarget:self action:@selector(buttonPressed) forControlEvents:controlEvent];
|
||||
}
|
||||
|
||||
- (void)buttonPressed {
|
||||
self.buttonPressBlock(self.title, NO);
|
||||
}
|
||||
|
||||
- (void)setAppearance:(UIKeyboardAppearance)appearance {
|
||||
_appearance = appearance;
|
||||
|
||||
UIColor *titleColor = nil, *backgroundColor = nil;
|
||||
UIColor *lightColor = [UIColor colorWithRed:253.0/255.0 green:253.0/255.0 blue:254.0/255.0 alpha:1];
|
||||
UIColor *darkColor = [UIColor colorWithRed:101.0/255.0 green:102.0/255.0 blue:104.0/255.0 alpha:1];
|
||||
|
||||
switch (_appearance) {
|
||||
default:
|
||||
case UIKeyboardAppearanceDefault:
|
||||
if (@available(iOS 13, *)) {
|
||||
titleColor = UIColor.labelColor;
|
||||
|
||||
if (self.usingDarkMode) {
|
||||
// style = UIBlurEffectStyleSystemUltraThinMaterialLight;
|
||||
backgroundColor = darkColor;
|
||||
} else {
|
||||
// style = UIBlurEffectStyleSystemMaterialLight;
|
||||
backgroundColor = lightColor;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case UIKeyboardAppearanceLight:
|
||||
titleColor = UIColor.blackColor;
|
||||
backgroundColor = lightColor;
|
||||
// style = UIBlurEffectStyleExtraLight;
|
||||
break;
|
||||
case UIKeyboardAppearanceDark:
|
||||
titleColor = UIColor.whiteColor;
|
||||
backgroundColor = darkColor;
|
||||
// style = UIBlurEffectStyleDark;
|
||||
break;
|
||||
}
|
||||
|
||||
self.backgroundColor = backgroundColor;
|
||||
[self setTitleColor:titleColor forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
- (BOOL)isEqual:(id)object {
|
||||
if ([object isKindOfClass:[FLEXKBToolbarButton class]]) {
|
||||
return [self.title isEqualToString:[object title]];
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSUInteger)hash {
|
||||
return self.title.hash;
|
||||
}
|
||||
|
||||
- (BOOL)useSystemAppearance {
|
||||
return self.appearance == UIKeyboardAppearanceDefault;
|
||||
}
|
||||
|
||||
- (BOOL)usingDarkMode {
|
||||
if (@available(iOS 12, *)) {
|
||||
return self.useSystemAppearance && self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark;
|
||||
}
|
||||
|
||||
return self.appearance == UIKeyboardAppearanceDark;
|
||||
}
|
||||
|
||||
- (void)traitCollectionDidChange:(UITraitCollection *)previous {
|
||||
if (@available(iOS 12, *)) {
|
||||
// Was darkmode toggled?
|
||||
if (previous.userInterfaceStyle != self.traitCollection.userInterfaceStyle) {
|
||||
if (self.useSystemAppearance) {
|
||||
// Recreate the background view with the proper colors
|
||||
self.appearance = self.appearance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation FLEXKBToolbarSuggestedButton
|
||||
|
||||
- (void)buttonPressed {
|
||||
self.buttonPressBlock(self.title, YES);
|
||||
}
|
||||
|
||||
@end
|
Reference in New Issue
Block a user