12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //
- // FLEXCarouselCell.m
- // FLEX
- //
- // Created by Tanner Bennett on 7/17/19.
- // Copyright © 2020 FLEX Team. All rights reserved.
- //
- #import "FLEXCarouselCell.h"
- #import "FLEXColor.h"
- #import "UIView+FLEX_Layout.h"
- @interface FLEXCarouselCell ()
- @property (nonatomic, readonly) UILabel *titleLabel;
- @property (nonatomic, readonly) UIView *selectionIndicatorStripe;
- @property (nonatomic) BOOL constraintsInstalled;
- @end
- @implementation FLEXCarouselCell
- - (instancetype)initWithFrame:(CGRect)frame {
- self = [super initWithFrame:frame];
- if (self) {
- _titleLabel = [UILabel new];
- _selectionIndicatorStripe = [UIView new];
- self.titleLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
- self.selectionIndicatorStripe.backgroundColor = self.tintColor;
- if (@available(iOS 10, *)) {
- self.titleLabel.adjustsFontForContentSizeCategory = YES;
- }
- [self.contentView addSubview:self.titleLabel];
- [self.contentView addSubview:self.selectionIndicatorStripe];
- [self installConstraints];
- [self updateAppearance];
- }
- return self;
- }
- - (void)updateAppearance {
- self.selectionIndicatorStripe.hidden = !self.selected;
- if (self.selected) {
- self.titleLabel.textColor = self.tintColor;
- } else {
- self.titleLabel.textColor = FLEXColor.deemphasizedTextColor;
- }
- }
- #pragma mark Public
- - (NSString *)title {
- return self.titleLabel.text;
- }
- - (void)setTitle:(NSString *)title {
- self.titleLabel.text = title;
- [self.titleLabel sizeToFit];
- [self setNeedsLayout];
- }
- #pragma mark Overrides
- - (void)prepareForReuse {
- [super prepareForReuse];
- [self updateAppearance];
- }
- - (void)installConstraints {
- CGFloat stripeHeight = 2;
- self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
- self.selectionIndicatorStripe.translatesAutoresizingMaskIntoConstraints = NO;
- UIView *superview = self.contentView;
- [self.titleLabel flex_pinEdgesToSuperviewWithInsets:UIEdgeInsetsMake(10, 15, 8 + stripeHeight, 15)];
- [self.selectionIndicatorStripe.leadingAnchor constraintEqualToAnchor:superview.leadingAnchor].active = YES;
- [self.selectionIndicatorStripe.bottomAnchor constraintEqualToAnchor:superview.bottomAnchor].active = YES;
- [self.selectionIndicatorStripe.trailingAnchor constraintEqualToAnchor:superview.trailingAnchor].active = YES;
- [self.selectionIndicatorStripe.heightAnchor constraintEqualToConstant:stripeHeight].active = YES;
- }
- - (void)setSelected:(BOOL)selected {
- super.selected = selected;
- [self updateAppearance];
- }
- @end
|