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