mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-31 04:44:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  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
 | 
