You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// // FLEXArgumentInputSwitchView.m // Flipboard // // Created by Ryan Olson on 6/16/14. // Copyright (c) 2014 Flipboard. All rights reserved. //
#import "FLEXArgumentInputSwitchView.h"
@interface FLEXArgumentInputSwitchView ()
@property (nonatomic, strong) UISwitch *inputSwitch;
@end
@implementation FLEXArgumentInputSwitchView
- (instancetype)initWithArgumentTypeEncoding:(const char *)typeEncoding { self = [super initWithArgumentTypeEncoding:typeEncoding]; if (self) { self.inputSwitch = [[UISwitch alloc] init]; [self.inputSwitch addTarget:self action:@selector(switchValueDidChange:) forControlEvents:UIControlEventValueChanged]; [self.inputSwitch sizeToFit]; [self addSubview:self.inputSwitch]; } return self; }
#pragma mark Input/Output
- (void)setInputValue:(id)inputValue { BOOL on = NO; if ([inputValue isKindOfClass:[NSNumber class]]) { NSNumber *number = (NSNumber *)inputValue; on = [number boolValue]; } else if ([inputValue isKindOfClass:[NSValue class]]) { NSValue *value = (NSValue *)inputValue; if (strcmp([value objCType], @encode(BOOL)) == 0) { [value getValue:&on]; } } self.inputSwitch.on = on; }
- (id)inputValue { BOOL isOn = [self.inputSwitch isOn]; NSValue *boxedBool = [NSValue value:&isOn withObjCType:@encode(BOOL)]; return boxedBool; }
- (void)switchValueDidChange:(id)sender { [self.delegate argumentInputViewValueDidChange:self]; }
#pragma mark - Layout and Sizing
- (void)layoutSubviews { [super layoutSubviews]; self.inputSwitch.frame = CGRectMake(0, self.topInputFieldVerticalLayoutGuide, self.inputSwitch.frame.size.width, self.inputSwitch.frame.size.height); }
- (CGSize)sizeThatFits:(CGSize)size { CGSize fitSize = [super sizeThatFits:size]; fitSize.height += self.inputSwitch.frame.size.height; return fitSize; }
#pragma mark - Class Helpers
+ (BOOL)supportsObjCType:(const char *)type withCurrentValue:(id)value { // Only BOOLs. Current value is irrelevant. return type && strcmp(type, @encode(BOOL)) == 0; }
@end
|