Fix RETableViewSegmentedCell constraints on iOS 8

On iOS 8 UIKit adds own constraints to contentView, so removing all
contentView’s constraints causes problems when the cell
is displayed for the second time on the screen.
This commit is contained in:
Arkadiusz Holko
2014-06-21 18:25:35 +02:00
parent be66559d59
commit 2ad39f2e4a

View File

@@ -31,6 +31,7 @@
@interface RETableViewSegmentedCell ()
@property (strong, readwrite, nonatomic) UISegmentedControl *segmentedControl;
@property (strong, nonatomic) NSArray *horizontalConstraints;
@end
@@ -54,15 +55,7 @@
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
}
#endif
}
- (void)cellWillAppear
{
self.textLabel.text = self.item.title;
[self.contentView removeConstraints:self.contentView.constraints];
[self.segmentedControl removeAllSegments];
CGFloat margin = (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) ? 15.0 : 10.0;
NSDictionary *metrics = @{@"margin": @(margin)};
[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:self.segmentedControl
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
@@ -70,11 +63,25 @@
attribute:NSLayoutAttributeCenterY
multiplier:1.0
constant:0]];
if (self.item.title.length > 0) {
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[_segmentedControl(>=140)]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)]];
} else {
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[_segmentedControl]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)]];
}
- (void)cellWillAppear
{
self.textLabel.text = self.item.title;
[self.segmentedControl removeAllSegments];
if (self.horizontalConstraints) {
// Clears previous constraints.
[self.contentView removeConstraints:self.horizontalConstraints];
}
CGFloat margin = (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) ? 15.0 : 10.0;
NSDictionary *metrics = @{@"margin": @(margin)};
if (self.item.title.length > 0) {
self.horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[_segmentedControl(>=140)]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)];
} else {
self.horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[_segmentedControl]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_segmentedControl)];
}
[self.contentView addConstraints:self.horizontalConstraints];
if (self.item.segmentedControlTitles.count > 0) {
[self.item.segmentedControlTitles enumerateObjectsUsingBlock:^(NSString *title, NSUInteger idx, BOOL *stop) {