1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-11 08:59:48 +01:00
Telegram/Telegraph/TGPhotoEditorBlurTypeButton.m

128 lines
3.2 KiB
Mathematica
Raw Normal View History

2015-10-01 18:19:52 +02:00
#import "TGPhotoEditorBlurTypeButton.h"
#import "TGPhotoEditorInterfaceAssets.h"
@interface TGPhotoEditorBlurTypeButton ()
{
UIImageView *_imageView;
UILabel *_titleLabel;
bool _animateHighlight;
}
@end
@implementation TGPhotoEditorBlurTypeButton
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
_imageView = [[UIImageView alloc] init];
_imageView.contentMode = UIViewContentModeCenter;
[self addSubview:_imageView];
_titleLabel = [[UILabel alloc] init];
_titleLabel.font = [TGPhotoEditorInterfaceAssets editorItemTitleFont];
_titleLabel.textAlignment = NSTextAlignmentCenter;
_titleLabel.textColor = [TGPhotoEditorInterfaceAssets editorItemTitleColor];
_titleLabel.highlightedTextColor = [TGPhotoEditorInterfaceAssets accentColor];
[self addSubview:_titleLabel];
}
return self;
}
#pragma mark - Properties
- (UIImage *)image
{
return _imageView.image;
}
- (void)setImage:(UIImage *)image
{
[_imageView setImage:image];
UIGraphicsBeginImageContextWithOptions(image.size, false, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
CGContextSetBlendMode (context, kCGBlendModeSourceAtop);
CGContextSetFillColorWithColor(context, [TGPhotoEditorInterfaceAssets accentColor].CGColor);
CGContextFillRect(context, CGRectMake(0, 0, image.size.width, image.size.height));
[_imageView setHighlightedImage:UIGraphicsGetImageFromCurrentImageContext()];
UIGraphicsEndImageContext();
}
- (NSString *)title
{
return _titleLabel.text;
}
- (void)setTitle:(NSString *)title
{
_titleLabel.text = title;
}
#pragma mark - Highlight
- (void)setSelected:(BOOL)selected
{
[super setSelected:selected];
_imageView.highlighted = selected;
_titleLabel.highlighted = selected;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
_animateHighlight = true;
[super touchesMoved:touches withEvent:event];
_animateHighlight = false;
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
_animateHighlight = true;
[super touchesCancelled:touches withEvent:event];
_animateHighlight = false;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
_animateHighlight = true;
[super touchesEnded:touches withEvent:event];
_animateHighlight = false;
}
- (void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
CGFloat alpha = (highlighted ? 0.4f : 1.0f) * (self.enabled ? 1.0f : 0.5f);
if (ABS(alpha - self.alpha) > FLT_EPSILON)
{
if (_animateHighlight)
{
[UIView animateWithDuration:0.2 animations:^
{
self.alpha = alpha;
}];
}
else
self.alpha = alpha;
}
}
#pragma mark - Layout
- (void)layoutSubviews
{
_imageView.frame = CGRectMake((self.frame.size.width - 50) / 2, (self.frame.size.height - 68) / 2, 50, 50);
_titleLabel.frame = CGRectMake(0, _imageView.frame.origin.y +_imageView.frame.size.height - 1, self.frame.size.width, 16);
}
@end