nr5*_*nr5 6 iphone uisearchbar ios
我想改变外观UISearchBar:所以,
如果有一种方法可以使我 UITextField(在自定义搜索背景中)的功能如何UISearchBar?或继承和覆盖- (void)layoutSubviews是唯一的方法?
请告诉如何继承它!
您可以UISearchBar使用此波纹管代码更改背景.
for (UIView *subview in searchBar.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
UIView *bg = [[UIView alloc] initWithFrame:subview.frame];
bg.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SkyBackground.jpeg"]];
[searchBar insertSubview:bg aboveSubview:subview];
[subview removeFromSuperview];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
从这段代码中你可以设置图像或其他任何背景UISearchBar.
另请参阅我的回答以及其他一些功能来更改搜索栏组件布局.如何在iOS上更改UISearchBar组件的内部背景颜色
更新:
更改取消按钮外观使用此波纹管代码...
UIButton *cancelButton = nil;
for(UIView *subView in searchBar.subviews)
{
if([subView isKindOfClass:[UIButton class]])
{
cancelButton = (UIButton*)subView;
//do something here with this cancel Button
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
它也可以使用UITextFieldDelegates
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *searchString;
if (string.length > 0) {
searchString = [NSString stringWithFormat:@"%@%@",textField.text, string];
} else {
searchString = [textField.text substringToIndex:[textField.text length] - 1];
}
NSPredicate *filter = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchString];
resultArray = [[resultTempArray filteredArrayUsingPredicate:filter] mutableCopy];
if (!searchString || searchString.length == 0) {
resultArray = [resultTempArray mutableCopy];
} else {
if (resultArray.count == 0) {
NSLog(@"No data From Search");
}
}
[tableView reloadData];
return YES;
}
Run Code Online (Sandbox Code Playgroud)