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

122 lines
4.2 KiB
Objective-C

#import "TGPhotoEditorToolButtonsView.h"
#import "TGFont.h"
#import "TGImageUtils.h"
#import "TGPhotoEditorInterfaceAssets.h"
#import "TGModernButtonView.h"
const CGFloat TGPhotoEditorToolButtonsViewSize = 53;
@implementation TGPhotoEditorToolButtonsView
{
UIView *_backgroundView;
UIView *_stripeView;
TGModernButtonView *_cancelButton;
TGModernButtonView *_confirmButton;
CGFloat _landscapeSize;
}
- (instancetype)initWithCancelButton:(NSString *)cancelButton doneButton:(NSString *)doneButton
{
self = [super initWithFrame:CGRectZero];
if (self != nil)
{
_backgroundView = [[UIView alloc] initWithFrame:self.bounds];
_backgroundView.backgroundColor = [TGPhotoEditorInterfaceAssets toolbarBackgroundColor];
[self addSubview:_backgroundView];
_stripeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
_stripeView.backgroundColor = UIColorRGB(0x242424);
[self addSubview:_stripeView];
_cancelButton = [[TGModernButtonView alloc] initWithFrame:CGRectZero];
_cancelButton.titleLabel.font = TGSystemFontOfSize(17);
[_cancelButton setTitle:cancelButton forState:UIControlStateNormal];
[_cancelButton setTitleColor:[UIColor whiteColor]];
[_cancelButton addTarget:self action:@selector(cancelButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_cancelButton];
_confirmButton = [[TGModernButtonView alloc] initWithFrame:CGRectZero];
_confirmButton.titleLabel.font = TGSystemFontOfSize(17);
[_confirmButton setTitle:doneButton forState:UIControlStateNormal];
[_confirmButton setTitleColor:UIColorRGB(0x5cc0ff)];
[_confirmButton addTarget:self action:@selector(confirmButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_confirmButton];
}
return self;
}
- (void)cancelButtonPressed
{
if (self.cancelPressed != nil)
self.cancelPressed();
}
- (void)confirmButtonPressed
{
if (self.confirmPressed != nil)
self.confirmPressed();
}
- (void)layoutSubviews
{
_backgroundView.frame = self.bounds;
CGFloat thickness = 1.0f;
if (TGIsRetina())
thickness = 0.5f;
if (self.frame.size.width > self.frame.size.height)
{
_stripeView.hidden = false;
_stripeView.frame = CGRectMake(self.frame.size.width / 2, 0, thickness, self.frame.size.height);
_cancelButton.frame = CGRectMake(0, 0, CGFloor(self.frame.size.width / 2), self.frame.size.height);
_confirmButton.frame = CGRectMake(CGFloor(self.frame.size.width / 2), 0, CGFloor(self.frame.size.width / 2), self.frame.size.height);
_cancelButton.titleLabel.font = TGSystemFontOfSize(17);
_confirmButton.titleLabel.font = TGSystemFontOfSize(17);
}
else
{
_stripeView.hidden = true;
_stripeView.frame = CGRectMake(0, self.frame.size.height / 2, self.frame.size.width, thickness);
_cancelButton.frame = CGRectMake(0, self.frame.size.height - 44, self.frame.size.width, 44);
_confirmButton.frame = CGRectMake(0, 0, self.frame.size.width, 44);
_cancelButton.titleLabel.font = TGSystemFontOfSize(13);
_confirmButton.titleLabel.font = TGSystemFontOfSize(14);
}
}
- (void)calculateLandscapeSizeForPossibleButtonTitles:(NSArray *)possibleButtonTitles
{
CGFloat maxWidth = 0.0f;
for (NSString *title in possibleButtonTitles)
{
CGFloat width = 0.0f;
if ([title respondsToSelector:@selector(sizeWithAttributes:)])
width = CGCeil([title sizeWithAttributes:@{ NSFontAttributeName:TGSystemFontOfSize(17) }].width - 1);
else
width = CGCeil([title sizeWithFont:TGSystemFontOfSize(17)].width - 1);
if (width > maxWidth)
maxWidth = width;
}
_landscapeSize = MAX(maxWidth, TGPhotoEditorToolButtonsViewSize);
}
- (CGFloat)landscapeSize
{
if (_landscapeSize < FLT_EPSILON)
{
[self calculateLandscapeSizeForPossibleButtonTitles:@[ [_cancelButton titleForState:UIControlStateNormal], [_confirmButton titleForState:UIControlStateNormal] ]];
}
return _landscapeSize;
}
@end