mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
151 lines
4.6 KiB
Objective-C
151 lines
4.6 KiB
Objective-C
#import "TGPhotoEditorHUDView.h"
|
|
|
|
#import "LegacyComponentsInternal.h"
|
|
#import "TGFont.h"
|
|
|
|
#import "TGPhotoEditorInterfaceAssets.h"
|
|
|
|
@interface TGPhotoEditorHUDView ()
|
|
{
|
|
UIImageView *_backgroundView;
|
|
UILabel *_label;
|
|
UILabel *_valueLabel;
|
|
}
|
|
@end
|
|
|
|
@implementation TGPhotoEditorHUDView
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
{
|
|
self = [super initWithFrame:frame];
|
|
if (self != nil)
|
|
{
|
|
self.userInteractionEnabled = false;
|
|
|
|
static UIImage *background = nil;
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^
|
|
{
|
|
UIGraphicsBeginImageContextWithOptions(CGSizeMake(21, 21), false, 0.0f);
|
|
CGContextRef context = UIGraphicsGetCurrentContext();
|
|
CGContextSetFillColorWithColor(context, [TGPhotoEditorInterfaceAssets panelBackgroundColor].CGColor);
|
|
|
|
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 21, 21) cornerRadius:6];
|
|
[path fill];
|
|
|
|
background = [UIGraphicsGetImageFromCurrentImageContext() resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
|
|
UIGraphicsEndImageContext();
|
|
});
|
|
|
|
_backgroundView = [[UIImageView alloc] initWithFrame:CGRectZero];
|
|
_backgroundView.alpha = 0.0f;
|
|
_backgroundView.image = background;
|
|
[self addSubview:_backgroundView];
|
|
|
|
UIFont *font;
|
|
|
|
if (iosMajorVersion() >= 13) {
|
|
UIFontDescriptor *fontDescriptor = [UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium].fontDescriptor;
|
|
NSArray *monospacedSetting = @[@{UIFontFeatureTypeIdentifierKey: @(kNumberSpacingType),
|
|
UIFontFeatureSelectorIdentifierKey: @(kMonospacedNumbersSelector)}];
|
|
UIFontDescriptor *updatedDescriptor = [fontDescriptor fontDescriptorByAddingAttributes:@{
|
|
UIFontDescriptorFeatureSettingsAttribute: monospacedSetting
|
|
}];
|
|
if (updatedDescriptor != nil) {
|
|
font = [UIFont fontWithDescriptor:updatedDescriptor size:14.0];
|
|
} else {
|
|
font = [UIFont systemFontOfSize:14];
|
|
}
|
|
} else {
|
|
font = [UIFont systemFontOfSize:14];
|
|
}
|
|
|
|
_label = [[UILabel alloc] initWithFrame:CGRectZero];
|
|
_label.backgroundColor = [UIColor clearColor];
|
|
_label.font = [UIFont systemFontOfSize:14];
|
|
_label.textAlignment = NSTextAlignmentLeft;
|
|
_label.textColor = [UIColor whiteColor];
|
|
[_backgroundView addSubview:_label];
|
|
|
|
_valueLabel = [[UILabel alloc] initWithFrame:CGRectZero];
|
|
_valueLabel.backgroundColor = [UIColor clearColor];
|
|
_valueLabel.font = font;
|
|
_valueLabel.textAlignment = NSTextAlignmentRight;
|
|
_valueLabel.textColor = [TGPhotoEditorInterfaceAssets accentColor];
|
|
[_backgroundView addSubview:_valueLabel];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)setText:(NSString *)text
|
|
{
|
|
if (text.length == 0)
|
|
{
|
|
[self setHidden:true animated:true];
|
|
return;
|
|
}
|
|
|
|
_label.text = text;
|
|
[_label sizeToFit];
|
|
|
|
_valueLabel.hidden = true;
|
|
|
|
[self setNeedsLayout];
|
|
|
|
[self setHidden:false animated:true];
|
|
}
|
|
|
|
- (void)setTitle:(NSString *)title value:(NSString *)value
|
|
{
|
|
if (title.length == 0)
|
|
{
|
|
[self setHidden:true animated:true];
|
|
return;
|
|
}
|
|
|
|
_label.text = title;
|
|
[_label sizeToFit];
|
|
|
|
_valueLabel.text = value;
|
|
[_valueLabel sizeToFit];
|
|
|
|
[self setNeedsLayout];
|
|
|
|
[self setHidden:false animated:true];
|
|
}
|
|
|
|
- (void)setHidden:(bool)hidden animated:(bool)animated
|
|
{
|
|
if (animated)
|
|
{
|
|
[UIView animateWithDuration:0.1f delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState animations:^
|
|
{
|
|
_backgroundView.alpha = hidden ? 0.0f : 1.0f;
|
|
} completion:nil];
|
|
}
|
|
else
|
|
{
|
|
_backgroundView.alpha = hidden ? 0.0f : 1.0f;
|
|
}
|
|
}
|
|
|
|
- (void)layoutSubviews
|
|
{
|
|
CGFloat padding = 8.0f;
|
|
|
|
_label.frame = CGRectMake(padding, 6.0f, CGCeil(_label.frame.size.width), CGCeil(_label.frame.size.height));
|
|
|
|
CGFloat width;
|
|
if (_valueLabel.isHidden) {
|
|
width = _label.frame.size.width + 2.0f * padding;
|
|
} else {
|
|
width = 2.0f * padding + _label.frame.size.width + 50.0f + 3.0f;
|
|
}
|
|
|
|
_valueLabel.frame = CGRectMake(width - padding - 50.0f, 6.0f, 50.0f, CGCeil(_valueLabel.frame.size.height));
|
|
|
|
_backgroundView.frame = CGRectMake((self.frame.size.width - width) / 2, 15, width, 30);
|
|
}
|
|
|
|
@end
|