#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