blob: dc698b316ddbd0e41877e0959f770a1aa14b8542 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
//
// MessageCell.m
// Juick
//
// Created by Vitaly Takmazov on 29.10.13.
// Copyright (c) 2013 com.juick. All rights reserved.
//
#import "MessageCell.h"
@interface MessageCell ()
@property (nonatomic, assign) BOOL didSetupConstraints;
@end
@implementation MessageCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.titleLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectZero];
[self.titleLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.titleLabel setLineBreakMode:NSLineBreakByTruncatingTail];
[self.titleLabel setNumberOfLines:1];
[self.titleLabel setTextAlignment:NSTextAlignmentLeft];
[self.titleLabel setTextColor:[UIColor blackColor]];
[self.titleLabel setBackgroundColor:[UIColor clearColor]];
self.bodyLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectZero];
self.bodyLabel.dataDetectorTypes = NSTextCheckingTypeLink;
self.bodyLabel.delegate = self;
[self.bodyLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.bodyLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.bodyLabel setLineBreakMode:NSLineBreakByTruncatingTail];
[self.bodyLabel setNumberOfLines:0];
[self.bodyLabel setTextAlignment:NSTextAlignmentLeft];
[self.bodyLabel setTextColor:[UIColor darkGrayColor]];
[self.bodyLabel setBackgroundColor:[UIColor clearColor]];
[self.contentView addSubview:self.titleLabel];
[self.contentView addSubview:self.bodyLabel];
[self updateFonts];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (void)updateConstraints {
[super updateConstraints];
if (self.didSetupConstraints) return;
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.titleLabel
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:kLabelHorizontalInsets]];
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.titleLabel
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:(kLabelHorizontalInsets / 2)]];
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.titleLabel
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:-kLabelHorizontalInsets]];
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.bodyLabel
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:kLabelHorizontalInsets]];
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.bodyLabel
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.titleLabel
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:(kLabelHorizontalInsets / 4)]];
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.bodyLabel
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeTrailing
multiplier:1.0f
constant:-kLabelHorizontalInsets]];
[self.contentView addConstraint:[NSLayoutConstraint
constraintWithItem:self.bodyLabel
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeBottom
multiplier:1.0f
constant:-(kLabelHorizontalInsets / 2)]];
self.didSetupConstraints = YES;
}
- (void)updateFonts
{
self.titleLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
self.bodyLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
}
- (void) attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
[[UIApplication sharedApplication] openURL:url];
}
@end
|