-
Notifications
You must be signed in to change notification settings - Fork 2
/
MultilineTableViewCell.m
36 lines (32 loc) · 1.67 KB
/
MultilineTableViewCell.m
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
//
// MultilineTableViewCell.m
//
// Created by Gareth Bestor on 14/04/16.
// Copyright © 2016 xiphware. All rights reserved.
//
#import "MultilineTableViewCell.h"
@implementation MultilineTableViewCell
- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize
withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority
verticalFittingPriority:(UILayoutPriority)verticalFittingPriority
{
CGSize size = [super systemLayoutSizeFittingSize:targetSize
withHorizontalFittingPriority:horizontalFittingPriority
verticalFittingPriority:verticalFittingPriority];
CGFloat detailHeight = CGRectGetHeight(self.detailTextLabel.frame);
if (detailHeight) { // if no detailTextLabel (or UITableViewCellStyleDefault) then no adjustment necessary
// Determine UITableViewCellStyle by looking at textLabel vs detailTextLabel layout
if (CGRectGetMinX(self.detailTextLabel.frame) > CGRectGetMinX(self.textLabel.frame)) {
// detailTextLabel right of textLabel means UITableViewCellStyleValue1 or UITableViewCellStyleValue2
if (CGRectGetHeight(self.detailTextLabel.frame) > CGRectGetHeight(self.textLabel.frame)) {
// If detailTextLabel is taller than textLabel then add difference to cell height
size.height += CGRectGetHeight(self.detailTextLabel.frame) - CGRectGetHeight(self.textLabel.frame);
}
} else {
// Otherwise UITableViewCellStyleSubtitle, in which case add detailTextLabel height to cell height
size.height += CGRectGetHeight(self.detailTextLabel.frame);
}
}
return size;
}
@end