Files
2026-07-13 12:35:01 +08:00

103 lines
3.7 KiB
Objective-C

//
// TLSearchController.m
// TLChat
//
// Created by 李伯坤 on 16/3/7.
// Copyright © 2016年 李伯坤. All rights reserved.
//
#import "TLSearchController.h"
#import "UIImage+Color.h"
#import "UIView+Extensions.h"
@implementation TLSearchController
{
UIStatusBarStyle lastBarStyle;
}
+ (TLSearchController *)createWithResultsContrller:(UIViewController<TLSearchResultControllerProtocol> *)resultVC
{
if (!resultVC) {
return nil;
}
TLSearchController *searchController = [[TLSearchController alloc] initWithSearchResultsController:resultVC];
[searchController setSearchResultsUpdater:resultVC];
return searchController;
}
- (id)initWithSearchResultsController:(UIViewController<TLSearchResultControllerProtocol> *)searchResultsController
{
if (self = [super initWithSearchResultsController:searchResultsController]) {
[self setDelegate:searchResultsController];
self.definesPresentationContext = YES;
// searchResultsController
searchResultsController.edgesForExtendedLayout = UIRectEdgeNone;
// searchBar
[self.searchBar setPlaceholder:LOCSTR(@"搜索")];
[self.searchBar setFrame:CGRectMake(0, 0, SCREEN_WIDTH, SEARCHBAR_HEIGHT)];
[self.searchBar setBackgroundImage:[UIImage imageWithColor:[UIColor colorGrayBG]]];
[self.searchBar setBarTintColor:[UIColor colorGrayBG]];
[self.searchBar setTintColor:[UIColor colorGreenDefault]];
[self.searchBar setDelegate:searchResultsController];
[self.searchBar setTranslucent:NO];
UITextField *tf = [[[self.searchBar.subviews firstObject] subviews] lastObject];
[tf.layer setMasksToBounds:YES];
[tf.layer setBorderWidth:BORDER_WIDTH_1PX];
[tf.layer setBorderColor:[UIColor colorGrayLine].CGColor];
[tf.layer setCornerRadius:5.0f];
for (UIView *view in self.searchBar.subviews[0].subviews) {
if ([view isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
UIView *bg = [[UIView alloc] init];
[bg setBackgroundColor:[UIColor colorGrayBG]];
[view addSubview:bg];
[bg mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(0);
}];
UIView *line = [[UIView alloc] init];
[line setBackgroundColor:[UIColor colorGrayLine]];
[view addSubview:line];
[line mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.and.right.and.bottom.mas_equalTo(0);
make.height.mas_equalTo(BORDER_WIDTH_1PX);
}];
break;
}
}
}
return self;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
lastBarStyle = [UIApplication sharedApplication].statusBarStyle;
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:lastBarStyle animated:YES];
}
- (void)setEnableVoiceInput:(BOOL)showVoiceButton
{
_enableVoiceInput = showVoiceButton;
if (showVoiceButton) {
[self.searchBar setShowsBookmarkButton:YES];
[self.searchBar setImage:[UIImage imageNamed:@"searchBar_voice"] forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];
[self.searchBar setImage:[UIImage imageNamed:@"searchBar_voice_HL"] forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateHighlighted];
}
else {
[self.searchBar setShowsBookmarkButton:NO];
}
}
@end