mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-08-21 18:28:47 -04:00
67 lines
2.1 KiB
Objective-C
67 lines
2.1 KiB
Objective-C
@import Alderis;
|
|
#import "libcolorpicker.h"
|
|
|
|
@interface PFColorAlert () <HBColorPickerDelegate>
|
|
|
|
@end
|
|
|
|
@implementation PFColorAlert {
|
|
PFColorAlert *_strongSelf;
|
|
HBColorPickerViewController *_viewController;
|
|
UIColor *_color;
|
|
BOOL _showAlpha;
|
|
PFColorAlertCompletion _completion;
|
|
}
|
|
|
|
+ (PFColorAlert *)colorAlertWithStartColor:(UIColor *)startColor showAlpha:(BOOL)showAlpha {
|
|
return [[self.class alloc] initWithStartColor:startColor showAlpha:showAlpha];
|
|
}
|
|
|
|
- (PFColorAlert *)initWithStartColor:(UIColor *)startColor showAlpha:(BOOL)showAlpha {
|
|
self = [super init];
|
|
if (self) {
|
|
_color = startColor;
|
|
_showAlpha = showAlpha;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)displayWithCompletion:(PFColorAlertCompletion)completion {
|
|
_completion = [completion copy];
|
|
_viewController = [[HBColorPickerViewController alloc] init];
|
|
_viewController.delegate = self;
|
|
|
|
UIColor *color = _color ?: [UIColor colorWithWhite:0.6 alpha:1];
|
|
HBColorPickerConfiguration *configuration = [[HBColorPickerConfiguration alloc] initWithColor:color];
|
|
configuration.supportsAlpha = _showAlpha;
|
|
_viewController.configuration = configuration;
|
|
|
|
UIWindow *window = [UIApplication sharedApplication].keyWindow;
|
|
_viewController.popoverPresentationController.sourceView = window;
|
|
_viewController.popoverPresentationController.sourceRect = window.bounds;
|
|
_viewController.popoverPresentationController.permittedArrowDirections = 0;
|
|
[window.rootViewController presentViewController:_viewController animated:YES completion:nil];
|
|
|
|
// Keep a strong reference to ourself. The color picker delegate is weakly stored by
|
|
// HBColorPickerViewController, but some users of PFColorAlert do not keep a strong reference to
|
|
// the PFColorAlert instance after calling displayWithCompletion:, causing this class to get
|
|
// deallocated and the delegate never called.
|
|
_strongSelf = self;
|
|
}
|
|
|
|
- (void)close {
|
|
_completion(_color);
|
|
_strongSelf = nil;
|
|
}
|
|
|
|
- (void)colorPicker:(HBColorPickerViewController *)colorPicker didSelectColor:(UIColor *)color {
|
|
_color = [color copy];
|
|
[self close];
|
|
}
|
|
|
|
- (void)colorPickerDidCancel:(HBColorPickerViewController *)colorPicker {
|
|
[self close];
|
|
}
|
|
|
|
@end
|