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.
134 lines
3.9 KiB
134 lines
3.9 KiB
// |
|
// TFSearchView.m |
|
// TFReader |
|
// |
|
// Created by 谢腾飞 on 2020/12/24. |
|
// Copyright © 2020 xtfei_2011@126.com. All rights reserved. |
|
// |
|
|
|
#import "TFSearchView.h" |
|
#import "WXYZ_GCDTimer.h" |
|
|
|
@interface TFSearchView () |
|
|
|
@property (nonatomic ,strong) WXYZ_GCDTimer *timer; |
|
@property (nonatomic ,weak) UILabel *searchTitle; |
|
@property (nonatomic ,strong) UIImageView *searchIcon; |
|
|
|
@end |
|
|
|
@implementation TFSearchView |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame |
|
{ |
|
if (self = [super initWithFrame:frame]) { |
|
|
|
self.backgroundColor = kColorRGBA(255, 255, 255, 0.3); |
|
self.layer.borderColor = kColorRGBA(235, 235, 241, 1).CGColor; |
|
self.layer.borderWidth = 0; |
|
|
|
[self createSubViews]; |
|
} |
|
return self; |
|
} |
|
|
|
- (void)createSubViews |
|
{ |
|
self.searchIcon = [[UIImageView alloc] init]; |
|
self.searchIcon.image = [[UIImage imageNamed:@"public_search"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; |
|
self.searchIcon.userInteractionEnabled = YES; |
|
self.searchIcon.tintColor = kWhiteColor; |
|
[self addSubview:self.searchIcon]; |
|
|
|
[self.searchIcon mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.right.mas_equalTo(self.mas_right).with.offset(- kHalfMargin); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.width.height.mas_equalTo(self.mas_height).with.multipliedBy(0.7); |
|
}]; |
|
|
|
UILabel *searchTitle = [[UILabel alloc] init]; |
|
searchTitle.backgroundColor = [UIColor clearColor]; |
|
searchTitle.textColor = [UIColor whiteColor]; |
|
searchTitle.font = kFont12; |
|
searchTitle.textAlignment = NSTextAlignmentLeft; |
|
[self addSubview:searchTitle]; |
|
self.searchTitle = searchTitle; |
|
|
|
[searchTitle mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.mas_left).with.offset(kHalfMargin); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.right.mas_equalTo(self.searchIcon.mas_left).with.offset(- kHalfMargin); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} |
|
|
|
- (void)setSearchViewDarkColor:(BOOL)searchViewDarkColor |
|
{ |
|
_searchViewDarkColor = searchViewDarkColor; |
|
|
|
if (searchViewDarkColor) { |
|
self.searchIcon.tintColor = kGrayTextLightColor; |
|
self.backgroundColor = kColorRGBA(255, 255, 255, 0.0); |
|
self.searchTitle.textColor = kGrayTextLightColor; |
|
self.layer.borderColor = kColorRGBA(235, 235, 241, 1).CGColor; |
|
self.layer.borderWidth = 0.6; |
|
|
|
} else { |
|
|
|
self.searchIcon.tintColor = kWhiteColor; |
|
self.backgroundColor = kColorRGBA(255, 255, 255, 0.3); |
|
self.searchTitle.textColor = [UIColor whiteColor]; |
|
self.layer.borderColor = kColorRGBA(235, 235, 241, 1).CGColor; |
|
self.layer.borderWidth = 0; |
|
} |
|
} |
|
|
|
- (void)setPlaceholderArray:(NSArray *)placeholderArray |
|
{ |
|
_placeholderArray = placeholderArray; |
|
|
|
if (placeholderArray.count > 0) { |
|
self.searchTitle.text = [placeholderArray objectOrNilAtIndex:0]; |
|
|
|
if (placeholderArray.count > 1) { |
|
int __block index = 0; |
|
|
|
WS(weakSelf) |
|
[self.timer stopTimer]; |
|
[self.timer startTimer]; |
|
|
|
self.timer.timerRunningBlock = ^(NSUInteger runTimes, CGFloat currentTime) { |
|
dispatch_async(dispatch_get_main_queue(), ^{ |
|
weakSelf.searchTitle.text = [placeholderArray objectOrNilAtIndex:index]; |
|
|
|
if (++ index == placeholderArray.count) { |
|
index = 0; |
|
} |
|
}); |
|
}; |
|
} |
|
} |
|
} |
|
|
|
- (NSString *)currentPlaceholder |
|
{ |
|
return self.searchTitle.text; |
|
} |
|
|
|
- (WXYZ_GCDTimer *)timer |
|
{ |
|
if (!_timer) { |
|
_timer = [[WXYZ_GCDTimer alloc] initCycleTimerWithInterval:10 immediatelyCallBack:YES]; |
|
} |
|
return _timer; |
|
} |
|
|
|
- (void)layoutSubviews |
|
{ |
|
[super layoutSubviews]; |
|
|
|
self.layer.cornerRadius = self.height / 2; |
|
self.clipsToBounds = YES; |
|
} |
|
|
|
@end
|
|
|