element-ios/Riot/Modules/MatrixKit/Views/MXKTableViewCell/MXKTableViewCellWithButtons.m

157 lines
8.2 KiB
Mathematica
Raw Normal View History

/*
Copyright 2015 OpenMarket Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#import "MXKTableViewCellWithButtons.h"
@interface MXKTableViewCellWithButtons ()
{
NSMutableArray *buttonArray;
}
@end
@implementation MXKTableViewCellWithButtons
- (void)setMxkButtonNumber:(NSUInteger)buttonNumber
{
if (_mxkButtonNumber == buttonNumber)
{
return;
}
_mxkButtonNumber = buttonNumber;
buttonArray = [NSMutableArray arrayWithCapacity:buttonNumber];
CGFloat containerWidth = self.contentView.frame.size.width / buttonNumber;
UIView *previousContainer = nil;
NSLayoutConstraint *leftConstraint;
NSLayoutConstraint *rightConstraint;
NSLayoutConstraint *widthConstraint;
NSLayoutConstraint *topConstraint;
NSLayoutConstraint *bottomConstraint;
for (NSInteger index = 0; index < buttonNumber; index++)
{
UIView *buttonContainer = [[UIView alloc] initWithFrame:CGRectMake(index * containerWidth, 0, containerWidth, self.contentView.frame.size.height)];
buttonContainer.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:buttonContainer];
// Add container constraints
buttonContainer.translatesAutoresizingMaskIntoConstraints = NO;
if (!previousContainer)
{
leftConstraint = [NSLayoutConstraint constraintWithItem:buttonContainer
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0];
widthConstraint = [NSLayoutConstraint constraintWithItem:buttonContainer
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeWidth
multiplier:(1.0 / buttonNumber)
constant:0];
}
else
{
leftConstraint = [NSLayoutConstraint constraintWithItem:buttonContainer
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:previousContainer
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0];
widthConstraint = [NSLayoutConstraint constraintWithItem:buttonContainer
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:previousContainer
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0];
}
topConstraint = [NSLayoutConstraint constraintWithItem:buttonContainer
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeTop
multiplier:1
constant:0];
bottomConstraint = [NSLayoutConstraint constraintWithItem:buttonContainer
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0];
[NSLayoutConstraint activateConstraints:@[leftConstraint, widthConstraint, topConstraint, bottomConstraint]];
previousContainer = buttonContainer;
// Add Button
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(10, 8, containerWidth - 20, buttonContainer.frame.size.height - 16);
[buttonContainer addSubview:button];
[buttonArray addObject:button];
// Add button constraints
button.translatesAutoresizingMaskIntoConstraints = NO;
leftConstraint = [NSLayoutConstraint constraintWithItem:button
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:buttonContainer
attribute:NSLayoutAttributeLeading
multiplier:1
constant:10];
rightConstraint = [NSLayoutConstraint constraintWithItem:button
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:buttonContainer
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:-10];
topConstraint = [NSLayoutConstraint constraintWithItem:button
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:buttonContainer
attribute:NSLayoutAttributeTop
multiplier:1
constant:8];
bottomConstraint = [NSLayoutConstraint constraintWithItem:button
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:buttonContainer
attribute:NSLayoutAttributeBottom
multiplier:1
constant:-8];
[NSLayoutConstraint activateConstraints:@[leftConstraint, rightConstraint, topConstraint, bottomConstraint]];
}
}
- (NSArray*)mxkButtons
{
return [NSArray arrayWithArray:buttonArray];
}
@end