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.
|
|
// // FLEXArgumentInputView.m // Flipboard // // Created by Ryan Olson on 5/30/14. // Copyright (c) 2014 Flipboard. All rights reserved. //
#import "FLEXArgumentInputView.h" #import "FLEXUtility.h"
@interface FLEXArgumentInputView ()
@property (nonatomic) UILabel *titleLabel; @property (nonatomic) NSString *typeEncoding;
@end
@implementation FLEXArgumentInputView
- (instancetype)initWithArgumentTypeEncoding:(const char *)typeEncoding { self = [super initWithFrame:CGRectZero]; if (self) { self.typeEncoding = typeEncoding != NULL ? @(typeEncoding) : nil; } return self; }
- (void)layoutSubviews { [super layoutSubviews]; if (self.showsTitle) { CGSize constrainSize = CGSizeMake(self.bounds.size.width, CGFLOAT_MAX); CGSize labelSize = [self.titleLabel sizeThatFits:constrainSize]; self.titleLabel.frame = CGRectMake(0, 0, labelSize.width, labelSize.height); } }
- (void)setBackgroundColor:(UIColor *)backgroundColor { [super setBackgroundColor:backgroundColor]; self.titleLabel.backgroundColor = backgroundColor; }
- (void)setTitle:(NSString *)title { if (![_title isEqual:title]) { _title = title; self.titleLabel.text = title; [self setNeedsLayout]; } }
- (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [UILabel new]; _titleLabel.font = [[self class] titleFont]; _titleLabel.backgroundColor = self.backgroundColor; _titleLabel.textColor = [UIColor colorWithWhite:0.3 alpha:1.0]; _titleLabel.numberOfLines = 0; [self addSubview:_titleLabel]; } return _titleLabel; }
- (BOOL)showsTitle { return self.title.length > 0; }
- (CGFloat)topInputFieldVerticalLayoutGuide { CGFloat verticalLayoutGuide = 0; if (self.showsTitle) { CGFloat titleHeight = [self.titleLabel sizeThatFits:self.bounds.size].height; verticalLayoutGuide = titleHeight + [[self class] titleBottomPadding]; } return verticalLayoutGuide; }
#pragma mark - Subclasses Can Override
- (BOOL)inputViewIsFirstResponder { return NO; }
+ (BOOL)supportsObjCType:(const char *)type withCurrentValue:(id)value { return NO; }
#pragma mark - Class Helpers
+ (UIFont *)titleFont { return [FLEXUtility defaultFontOfSize:12.0]; }
+ (CGFloat)titleBottomPadding { return 4.0; }
#pragma mark - Sizing
- (CGSize)sizeThatFits:(CGSize)size { CGFloat height = 0; if (self.title.length > 0) { CGSize constrainSize = CGSizeMake(size.width, CGFLOAT_MAX); height += ceil([self.titleLabel sizeThatFits:constrainSize].height); height += [[self class] titleBottomPadding]; } return CGSizeMake(size.width, height); }
@end
|