Swiftgram/submodules/LegacyComponents/Sources/TGEmbedPIPPullArrowView.m
2020-02-22 15:38:54 +04:00

69 lines
2.1 KiB
Objective-C

#import "TGEmbedPIPPullArrowView.h"
#import <LegacyComponents/LegacyComponents.h>
@interface TGEmbedPIPPullArrowView ()
{
UIImageView *_topPart;
UIImageView *_bottomPart;
}
@end
@implementation TGEmbedPIPPullArrowView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
self.layer.rasterizationScale = TGScreenScaling();
self.layer.shouldRasterize = true;
if ([self.layer respondsToSelector:@selector(setAllowsEdgeAntialiasing:)])
self.layer.allowsEdgeAntialiasing = true;
static dispatch_once_t onceToken;
static UIImage *image;
dispatch_once(&onceToken, ^
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(8, 23), false, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
[[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 8, 23) cornerRadius:4.5f] fill];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
});
_topPart = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 8, 38)];
_topPart.contentMode = UIViewContentModeBottom;
_topPart.image = image;
[self addSubview:_topPart];
_bottomPart = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 8, 38)];
_bottomPart.contentMode = UIViewContentModeTop;
_bottomPart.image = image;
_bottomPart.transform = CGAffineTransformMakeScale(1, -1);
[self addSubview:_bottomPart];
}
return self;
}
- (void)setAngled:(bool)angled animated:(bool)animated
{
void (^changeBlock)(void) = ^
{
CGFloat angle = angled ? 0.20944f : 0.0f;
_topPart.transform = CGAffineTransformMakeRotation(angle);
_bottomPart.transform = CGAffineTransformMakeRotation(-angle);
};
if (animated)
[UIView animateWithDuration:0.25 animations:changeBlock];
else
changeBlock();
}
@end