1
0
mirror of https://github.com/danog/Telegram.git synced 2024-11-30 04:29:15 +01:00
Telegram/legacy/TelegraphKit/TGImagePickerCellCheckButton.m
2015-10-01 19:19:52 +03:00

113 lines
2.5 KiB
Objective-C

#import "TGImagePickerCellCheckButton.h"
static UIImage *checkImageNormal()
{
static UIImage *image = nil;
if (image == nil)
image = [UIImage imageNamed:@"ImagePickerThumbnalSelect.png"];
return image;
}
static UIImage *checkImageChecked()
{
static UIImage *image = nil;
if (image == nil)
image = [UIImage imageNamed:@"ImagePickerThumbnalSelect_Checked.png"];
return image;
}
@interface TGImagePickerCellCheckButton ()
{
bool _checked;
}
@end
@implementation TGImagePickerCellCheckButton
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
[self commonInit];
}
return self;
}
- (id)init
{
self = [super init];
if (self != nil)
{
[self commonInit];
}
return self;
}
- (void)commonInit
{
_checkView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 33, 33)];
[self addSubview:_checkView];
}
- (void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
if (highlighted)
_checkView.transform = CGAffineTransformMakeScale(0.8f, 0.8f);
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
_checkView.transform = CGAffineTransformIdentity;
[super touchesCancelled:touches withEvent:event];
}
- (bool)checked
{
return _checked;
}
- (void)setChecked:(bool)checked animated:(bool)animated
{
_checked = checked;
_checkView.image = checked ? checkImageChecked() : checkImageNormal();
if (animated)
{
_checkView.transform = CGAffineTransformMakeScale(0.8f, 0.8f);
if (checked)
{
[UIView animateWithDuration:0.12 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^
{
_checkView.transform = CGAffineTransformMakeScale(1.16f, 1.16f);
} completion:^(BOOL finished)
{
if (finished)
{
[UIView animateWithDuration:0.08 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^
{
_checkView.transform = CGAffineTransformIdentity;
} completion:nil];
}
}];
}
else
{
[UIView animateWithDuration:0.16 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^
{
_checkView.transform = CGAffineTransformIdentity;
} completion:nil];
}
}
else
{
_checkView.transform = CGAffineTransformIdentity;
}
}
@end