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

115 lines
2.7 KiB
Objective-C

#import "TGPhotoCropGridView.h"
#import "TGImageUtils.h"
const NSInteger TGPhotoCropMajorGridViewLinesCount = 2;
const NSInteger TGPhotoCropMinorGridViewLinesCount = 8;
@interface TGPhotoCropGridView ()
{
bool _animatingHidden;
bool _targetHidden;
}
@end
@implementation TGPhotoCropGridView
- (instancetype)initWithMode:(TGPhotoCropViewGridMode)mode
{
self = [super initWithFrame:CGRectZero];
if (self != nil)
{
self.opaque = false;
self.userInteractionEnabled = false;
_mode = mode;
}
return self;
}
- (void)setFrame:(CGRect)frame
{
[super setFrame:frame];
if (!self.hidden)
[self setNeedsDisplay];
}
- (void)setHidden:(BOOL)hidden
{
[self setHidden:hidden animated:false duration:0 delay:0];
}
- (void)setHidden:(bool)hidden animated:(bool)animated duration:(CGFloat)duration delay:(CGFloat)delay
{
if (_animatingHidden && _targetHidden == hidden)
return;
[self setNeedsDisplay];
_targetHidden = hidden;
if (animated)
{
_animatingHidden = YES;
super.hidden = false;
[UIView animateWithDuration:duration
delay:delay
options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut
animations:^
{
self.alpha = hidden ? 0.0f : 1.0f;
} completion:^(BOOL finished)
{
if (finished)
{
super.hidden = hidden;
_animatingHidden = NO;
}
}];
}
else
{
super.hidden = hidden;
self.alpha = hidden ? 0.0f : 1.0f;
}
}
- (void)drawRect:(CGRect)rect
{
CGFloat width = rect.size.width;
CGFloat height = rect.size.height;
CGFloat thickness = 1.0f;
if (TGIsRetina())
thickness = 0.5f;
for (NSInteger i = 0; i < 3; i++)
{
if (_mode == TGPhotoCropViewGridModeMinor)
{
for (NSInteger j = 1; j < 4; j++)
{
[UIColorRGBA(0xeeeeee, 0.7f) set];
UIRectFill(CGRectMake(CGRound(width / 3 / 3 * j + width / 3 * i), 0, thickness, CGRound(height)));
UIRectFill(CGRectMake(0, CGRound(height / 3 / 3 * j + height / 3 * i), CGRound(width), thickness));
}
}
if (_mode == TGPhotoCropViewGridModeMajor)
{
if (i > 0)
{
[[UIColor whiteColor] set];
UIRectFill(CGRectMake(CGRound(width / 3 * i), 0, thickness, CGRound(height)));
UIRectFill(CGRectMake(0, CGRound(height / 3 * i), CGRound(width), thickness));
}
}
}
}
@end