mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-10-29 12:00:47 -04:00
79 lines
2.2 KiB
Objective-C
79 lines
2.2 KiB
Objective-C
//
|
|
// FLEXTableContentHeaderCell.m
|
|
// FLEX
|
|
//
|
|
// Created by Peng Tao on 15/11/26.
|
|
// Copyright © 2015年 f. All rights reserved.
|
|
//
|
|
|
|
#import "FLEXTableColumnHeader.h"
|
|
#import "FLEXColor.h"
|
|
#import "UIFont+FLEX.h"
|
|
#import "FLEXUtility.h"
|
|
|
|
static const CGFloat kMargin = 5;
|
|
static const CGFloat kArrowWidth = 20;
|
|
|
|
@interface FLEXTableColumnHeader ()
|
|
@property (nonatomic, readonly) UILabel *arrowLabel;
|
|
@property (nonatomic, readonly) UIView *lineView;
|
|
@end
|
|
|
|
@implementation FLEXTableColumnHeader
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
self = [super initWithFrame:frame];
|
|
if (self) {
|
|
self.backgroundColor = FLEXColor.secondaryBackgroundColor;
|
|
|
|
_titleLabel = [UILabel new];
|
|
_titleLabel.font = UIFont.flex_defaultTableCellFont;
|
|
[self addSubview:_titleLabel];
|
|
|
|
_arrowLabel = [UILabel new];
|
|
_arrowLabel.font = UIFont.flex_defaultTableCellFont;
|
|
[self addSubview:_arrowLabel];
|
|
|
|
_lineView = [UIView new];
|
|
_lineView.backgroundColor = FLEXColor.hairlineColor;
|
|
[self addSubview:_lineView];
|
|
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)setSortType:(FLEXTableColumnHeaderSortType)type {
|
|
_sortType = type;
|
|
|
|
switch (type) {
|
|
case FLEXTableColumnHeaderSortTypeNone:
|
|
_arrowLabel.text = @"";
|
|
break;
|
|
case FLEXTableColumnHeaderSortTypeAsc:
|
|
_arrowLabel.text = @"⬆️";
|
|
break;
|
|
case FLEXTableColumnHeaderSortTypeDesc:
|
|
_arrowLabel.text = @"⬇️";
|
|
break;
|
|
}
|
|
}
|
|
|
|
- (void)layoutSubviews {
|
|
[super layoutSubviews];
|
|
|
|
CGSize size = self.frame.size;
|
|
|
|
self.titleLabel.frame = CGRectMake(kMargin, 0, size.width - kArrowWidth - kMargin, size.height);
|
|
self.arrowLabel.frame = CGRectMake(size.width - kArrowWidth, 0, kArrowWidth, size.height);
|
|
self.lineView.frame = CGRectMake(size.width - 1, 2, FLEXPointsToPixels(1), size.height - 4);
|
|
}
|
|
|
|
- (CGSize)sizeThatFits:(CGSize)size {
|
|
CGFloat margins = kArrowWidth - 2 * kMargin;
|
|
size = CGSizeMake(size.width - margins, size.height);
|
|
CGFloat width = [_titleLabel sizeThatFits:size].width + margins;
|
|
return CGSizeMake(width, size.height);
|
|
}
|
|
|
|
@end
|