在iOS编程中,制作搜索框可以通过以下几种方法实现:
方法一:使用UISearchBar
遵守协议
实现`UISearchBarDelegate`协议。
创建搜索框
在视图控制器的`viewDidLoad`方法中,创建`UISearchBar`实例并设置其frame。
将`UISearchBar`设置为导航栏的标题视图。
```objc
(void)viewDidLoad {
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] init];
searchBar.frame = CGRectMake(0, 0, 300, 35);
self.navigationItem.titleView = searchBar;
}
```
方法二:使用UISearchController
初始化UISearchController
在视图控制器的`viewDidLoad`方法中,初始化`UISearchController`并设置其`searchResultsUpdater`。
将`UISearchController`的`searchBar`设置为`tableView`的表头视图。
```objc
(void)viewDidLoad {
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = false;
[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;
}
```
方法三:使用UITextField自定义搜索框
创建UITextField
在视图控制器的`viewDidLoad`方法中,创建`UITextField`实例并设置其frame、背景、文字垂直居中等属性。
将`UITextField`的左侧添加一个`UIImageView`作为搜索图标。
```objc
(void)viewDidLoad {
[super viewDidLoad];
UITextField *textField = [[UITextField alloc] init];
textField.frame = CGRectMake(0, 0, 320, 30);
textField.background = [UIImage resizeimage:@""];
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
UIImageView *searchImageView = [[UIImageView alloc] init];
searchImageView.image = [UIImage imageWithName:@""];
searchImageView.frame = CGRectMake(0, 0, 35, 35);
searchImageView.contentMode = UIViewContentModeCenter;
textField.leftView = searchImageView;
textField.leftViewMode = UITextFieldViewModeAlways;
// 添加实时搜索功能
textField.addTarget:self action:@selector(textFieldShouldReturn:) forControlEvents:UIControlEventEditingDidEnd];
}
```
方法四:自定义UISearchBar样式
设置UISearchBar的属性
可以设置`UISearchBar`的样式(如`UISearchBarStyleMinimal`、`UISearchBarStyleDefault`、`UISearchBarStyleProminent`)。
设置搜索框的背景图片和附件选择按钮视图。
```objc
(void)viewDidLoad {
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] init];
searchBar.style = UISearchBarStyleDefault;
searchBar.backgroundImage = [UIImage imageNamed:@"searchBarBackground"];
searchBar.scopeButtonTitles = @[@"Scope 1", @"Scope 2", @"Scope 3"];
searchBar.selectedScopeButtonIndex = 1;
self.navigationItem.titleView = searchBar;
}
```
总结
使用UISearchBar:适用于简单的搜索需求,可以直接添加到导航栏中。
使用UISearchController:适用于需要在`UITableView`中实现搜索功能的应用。
使用UITextField:适用于需要更多自定义功能的搜索框,例如实时搜索。
自定义UISearchBar样式:适用于需要高度定制化搜索框外观的应用。
根据具体需求选择合适的方法,可以实现一个功能丰富且美观的搜索框。