| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #import "BTUIKSwitchFormField.h"
- #import "BTUIKViewUtil.h"
- #import "BTUIKAppearance.h"
- @interface BTUIKSwitchFormField ()
- @property (nonatomic, strong) UILabel *formLabel;
- @property (nonatomic, strong) NSMutableArray *layoutConstraints;
- @end
- @implementation BTUIKSwitchFormField
- - (instancetype)initWithTitle:(NSString *)title {
- self = [super initWithFrame:CGRectZero];
- if (self) {
- self.opaque = NO;
- self.backgroundColor = UIColor.clearColor;
- self.translatesAutoresizingMaskIntoConstraints = NO;
- _switchControl = [[UISwitch alloc] init];
- _switchControl.translatesAutoresizingMaskIntoConstraints = NO;
- _switchControl.accessibilityLabel = title;
- _switchControl.tintColor = [BTUIKAppearance sharedInstance].tintColor;
- _switchControl.onTintColor = [BTUIKAppearance sharedInstance].switchOnTintColor;
- _switchControl.thumbTintColor = [BTUIKAppearance sharedInstance].switchThumbTintColor;
- [self addSubview:_switchControl];
- _formLabel = [[UILabel alloc] init];
- [BTUIKAppearance styleLabelBoldPrimary:_formLabel];
- _formLabel.translatesAutoresizingMaskIntoConstraints = NO;
- _formLabel.text = title;
- [self addSubview:_formLabel];
- [_formLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
- [_formLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
- [self setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
- [self updateConstraints];
- }
- return self;
- }
- - (void)updateConstraints {
- if (self.layoutConstraints != nil) {
- [self removeConstraints:self.layoutConstraints];
- }
- self.layoutConstraints = [NSMutableArray array];
-
- NSMutableDictionary *viewBindings = [@{@"view":self, @"switchControl":self.switchControl, @"formLabel": self.formLabel} mutableCopy];
-
- NSDictionary *metrics = @{@"PADDING":@15};
-
- BOOL hasFormLabel = (self.formLabel.text.length > 0);
-
- [self.layoutConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[switchControl]|"
- options:0
- metrics:metrics
- views:viewBindings]];
-
- [self.layoutConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[formLabel]|"
- options:0
- metrics:metrics
- views:viewBindings]];
- if (hasFormLabel) {
- [self.layoutConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[formLabel(<=0@1)]-(PADDING)-[switchControl]"
- options:0
- metrics:metrics
- views:viewBindings]];
- } else {
- [self.layoutConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(PADDING)-[switchControl]"
- options:0
- metrics:metrics
- views:viewBindings]];
- }
-
- [self.layoutConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[switchControl]-(PADDING)-|"
- options:0
- metrics:metrics
- views:viewBindings]];
-
- NSArray *contraintsToAdd = [self.layoutConstraints copy];
- [self addConstraints:contraintsToAdd];
- [super updateConstraints];
- }
- @end
|