mirror of
https://github.com/danog/Telegram.git
synced 2024-12-02 09:27:55 +01:00
115 lines
2.7 KiB
Objective-C
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
|