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

141 lines
5.7 KiB
Objective-C

#import "TGChangePhoneNumberHelpView.h"
#import "TGFont.h"
#import "TGModernButton.h"
#import "TGImageUtils.h"
@interface TGChangePhoneNumberHelpView ()
{
UIEdgeInsets _insets;
UIImageView *_iconView;
UILabel *_label;
TGModernButton *_changeButton;
}
@end
@implementation TGChangePhoneNumberHelpView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
_iconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ChangePhoneHelpIcon.png"]];
_iconView.userInteractionEnabled = true;
UITapGestureRecognizer *debugTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(debugTapGesture:)];
debugTapRecognizer.numberOfTapsRequired = 7;
[_iconView addGestureRecognizer:debugTapRecognizer];
[self addSubview:_iconView];
_label = [[UILabel alloc] init];
_label.backgroundColor = [UIColor clearColor];
_label.font = TGSystemFontOfSize(14.0f);
_label.textColor = UIColorRGB(0x6d6d72);
_label.lineBreakMode = NSLineBreakByWordWrapping;
_label.numberOfLines = 0;
NSMutableArray *boldRanges = [[NSMutableArray alloc] init];
NSMutableString *cleanText = [[NSMutableString alloc] initWithString:TGLocalized(@"PhoneNumberHelp.Help")];
while (true)
{
NSRange startRange = [cleanText rangeOfString:@"**"];
if (startRange.location == NSNotFound)
break;
[cleanText deleteCharactersInRange:startRange];
NSRange endRange = [cleanText rangeOfString:@"**"];
if (endRange.location == NSNotFound)
break;
[cleanText deleteCharactersInRange:endRange];
[boldRanges addObject:[NSValue valueWithRange:NSMakeRange(startRange.location, endRange.location - startRange.location)]];
}
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:cleanText attributes:@{
NSFontAttributeName: _label.font,
NSForegroundColorAttributeName: _label.textColor
}];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineSpacing = 2;
style.lineBreakMode = NSLineBreakByWordWrapping;
style.alignment = NSTextAlignmentCenter;
[attributedString addAttributes:@{NSParagraphStyleAttributeName: style} range:NSMakeRange(0, attributedString.length)];
NSDictionary *boldAttributes = @{NSFontAttributeName: TGBoldSystemFontOfSize(14.0f)};
for (NSValue *nRange in boldRanges)
{
[attributedString addAttributes:boldAttributes range:[nRange rangeValue]];
}
_label.attributedText = attributedString;
[self addSubview:_label];
_changeButton = [[TGModernButton alloc] init];
_changeButton.backgroundColor = [UIColor clearColor];
[_changeButton setTitleColor:TGAccentColor()];
_changeButton.titleLabel.font = TGSystemFontOfSize(19.0f);
[_changeButton setTitle:TGLocalized(@"PhoneNumberHelp.ChangeNumber") forState:UIControlStateNormal];
[_changeButton setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 20.0f)];
[_changeButton sizeToFit];
CGSize buttonSize = _changeButton.frame.size;
_changeButton.frame = CGRectMake(0.0f, 0.0f, buttonSize.width, buttonSize.height + 20.0f);
UIImageView *arrowView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ModernTourButtonRightArrow.png"]];
CGSize arrowSize = arrowView.frame.size;
arrowView.frame = CGRectMake(_changeButton.frame.size.width - arrowSize.width, CGFloor((_changeButton.frame.size.height - arrowView.frame.size.height) / 2.0f) + 1.0f + TGRetinaPixel, arrowSize.width, arrowSize.height);
[_changeButton addSubview:arrowView];
[_changeButton addTarget:self action:@selector(actionButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_changeButton];
}
return self;
}
- (void)actionButtonPressed
{
if (_changePhonePressed)
_changePhonePressed();
}
- (void)setInsets:(UIEdgeInsets)insets
{
_insets = insets;
[self setNeedsLayout];
}
- (void)layoutSubviews
{
[super layoutSubviews];
CGFloat availableHeight = self.frame.size.height - _insets.top - _insets.bottom;
bool largeScreen = availableHeight >= 420.0f;
CGFloat contentHeight = largeScreen ? 420.0f : 400.0f;
_iconView.frame = (CGRect){{CGFloor((self.frame.size.width - _iconView.frame.size.width) / 2.0f), _insets.top + CGFloor((availableHeight - contentHeight) / 2.0f + _iconView.frame.size.height * (largeScreen ? 0.2f : 0.5f))}, _iconView.frame.size};
CGSize labelSize = [_label sizeThatFits:CGSizeMake(295.0f, CGFLOAT_MAX)];
_label.frame = (CGRect){{CGFloor((self.frame.size.width - labelSize.width) / 2.0f), _insets.top + CGFloor((availableHeight - contentHeight) / 2.0f) + CGFloor((contentHeight - labelSize.height) / 2.0f) + CGFloor((contentHeight - _iconView.frame.size.height - _changeButton.frame.size.height) * (largeScreen ? 0.11f : 0.11f))}, labelSize};
_changeButton.frame = (CGRect){{CGFloor((self.frame.size.width - _changeButton.frame.size.width) / 2.0f), _insets.top + CGFloor((availableHeight - contentHeight) / 2.0f) + contentHeight - _changeButton.frame.size.height}, _changeButton.frame.size};
}
- (void)debugTapGesture:(UITapGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateEnded)
{
if (_debugPressed)
_debugPressed();
}
}
@end