1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-02 09:27:55 +01:00
Telegram/Telegraph/TGModernGalleryVideoFooterView.m
2015-10-01 19:19:52 +03:00

116 lines
3.3 KiB
Objective-C

#import "TGModernGalleryVideoFooterView.h"
#import "TGModernButton.h"
@interface TGModernGalleryVideoFooterView ()
{
TGModernButton *_playPauseButton;
}
@end
@implementation TGModernGalleryVideoFooterView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
_playPauseButton = [[TGModernButton alloc] init];
_playPauseButton.exclusiveTouch = true;
[_playPauseButton setImage:[self playImage] forState:UIControlStateNormal];
_playPauseButton.modernHighlight = true;
[_playPauseButton addTarget:self action:@selector(playPauseButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_playPauseButton];
}
return self;
}
- (UIImage *)playImage
{
static UIImage *image = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(23.0f, 23.0f), false, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextMoveToPoint(context, 3.0f, 0.0f);
CGContextAddLineToPoint(context, 23.5f, 11.25f);
CGContextAddLineToPoint(context, 3.0f, 22.5f);
CGContextClosePath(context);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillPath(context);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
});
return image;
}
- (UIImage *)pauseImage
{
static UIImage *image = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(21.0f, 23.0f), false, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat width = 4.0f;
CGFloat spacing = 6.0f;
CGFloat spacingTop = 1.0f;
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillRect(context, CGRectMake(CGFloor((21.0f - spacing - width * 2.0f) / 2.0f), spacingTop, width, 22.5f - spacingTop * 2.0f));
CGContextFillRect(context, CGRectMake(CGFloor((21.0f - spacing - width * 2.0f) / 2.0f) + width + spacing, spacingTop, width, 22.5f - spacingTop * 2.0f));
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
});
return image;
}
- (void)setIsPlaying:(bool)isPlaying
{
_isPlaying = isPlaying;
[_playPauseButton setImage:_isPlaying ? [self pauseImage] : [self playImage] forState:UIControlStateNormal];
}
- (void)playPauseButtonPressed
{
if (_isPlaying)
{
if (_pausePressed)
_pausePressed();
}
else
{
if (_playPressed)
_playPressed();
}
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
if (view == _playPauseButton)
return view;
return nil;
}
- (void)layoutSubviews
{
CGSize buttonSize = {60.0f, 44.0f};
_playPauseButton.frame = (CGRect){{CGFloor((self.frame.size.width - buttonSize.width) / 2.0f), CGFloor((self.frame.size.height - buttonSize.height) / 2.0f)}, buttonSize};
}
@end