// _____ _ // |_ _| |_ _ _ ___ ___ _ __ __ _ // | | | ' \| '_/ -_) -_) ' \/ _` |_ // |_| |_||_|_| \___\___|_|_|_\__,_(_) // // Threema iOS Client // Copyright (c) 2016-2020 Threema GmbH // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License, version 3, // as published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #import "CaptionView.h" #import "MediaBrowserFile.h" #import "RectUtil.h" #import "Utils.h" static const CGFloat labelPadding = 10.0; static const CGFloat defaultCustomViewHeight = 24.0; @interface CaptionView () @property BaseMessage *message; @property UIView *customView; @property UILabel *timeLabel; @end @implementation CaptionView -(id)initWithPhoto:(id)photo { self = [super initWithPhoto:photo]; if (self) { if ([photo respondsToSelector:@selector(sourceReference)]) { _message = [photo performSelector:@selector(sourceReference)]; CGRect customViewRect = CGRectMake(labelPadding, labelPadding, self.bounds.size.width-labelPadding*2, defaultCustomViewHeight); _customView = [self customViewInRect:customViewRect]; [self addSubview:_customView]; CGRect timeLabelRect = [RectUtil setYPositionOf:customViewRect y:CGRectGetMaxY(customViewRect) + labelPadding]; _timeLabel = [self createLabelInRect:timeLabelRect]; [_timeLabel setText: [DateFormatter shortStyleDateTime:_message.remoteSentDate]]; [self addSubview:_timeLabel]; // adapt to height of resulting custom view if (_customView.frame.size.height != defaultCustomViewHeight) { _timeLabel.frame = [RectUtil setYPositionOf:_timeLabel.frame y:CGRectGetMaxY(_customView.frame)]; self.frame = [RectUtil setHeightOf:self.frame height:CGRectGetMaxY(_timeLabel.frame)]; } } } self.userInteractionEnabled = YES; return self; } - (void)setupCaption { ;// ignore } -(CGSize)sizeThatFits:(CGSize)size { CGSize labelSize = CGSizeMake(size.width, CGRectGetMaxY(_timeLabel.frame) + labelPadding); return labelSize; } - (UIView *)customViewInRect:(CGRect)rect { return nil; } - (UILabel *)createLabelInRect:(CGRect)rect { UILabel *label = [[UILabel alloc] initWithFrame:rect]; label.autoresizingMask = UIViewAutoresizingFlexibleWidth; label.opaque = NO; label.backgroundColor = [UIColor clearColor]; label.textAlignment = NSTextAlignmentCenter; label.lineBreakMode = NSLineBreakByWordWrapping; label.numberOfLines = 1; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:17]; return label; } - (UITextView *)createTextViewInRect:(CGRect)rect { UITextView *textView = [[UITextView alloc] initWithFrame:rect]; textView.autoresizingMask = UIViewAutoresizingFlexibleWidth; textView.opaque = NO; textView.backgroundColor = [UIColor clearColor]; textView.textAlignment = NSTextAlignmentCenter; textView.textColor = [UIColor whiteColor]; textView.font = [UIFont systemFontOfSize:17.0]; return textView; } @end