我知道如何删除/更改搜索字段周围的UISearchBar种背景色:

[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview];
self.searchBar.backgroundColor = [UIColor grayColor];

搜索栏定制

但我不知道如何在里面这样做:

所需的UISearchBar定制

这需要与iOS 4.3+兼容.

推荐答案

使用以下代码更改搜索栏的UITextField背景图像:

UITextField *searchField;
NSUInteger numViews = [searchBar.subviews count];
for (int i = 0; i < numViews; i++) {
    if ([[searchBar.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
        searchField = [searchBar.subviews objectAtIndex:i];
    }
}
if (searchField) {
    searchField.textColor = [UIColor whiteColor];
    [searchField setBackground: [UIImage imageNamed:@"yourImage"]]; //set your gray background image here
    [searchField setBorderStyle:UITextBorderStyleNone];
}

使用以下代码更改UISearchBarIcon:

 UIImageView *searchIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourSearchBarIconImage"]];
searchIcon.frame = CGRectMake(10, 10, 24, 24);
[searchBar addSubview:searchIcon];
[searchIcon release];

此外,要更改搜索栏图标,您可以在UISearchBar上使用以下内置方法(可从iOS 5+获得):

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state

在这里,您可以设置4种类型的UISearchBarIcon,即:

  1. UISearchBarIconBookmark
  2. UISearchBarIconClear
  3. UISearchBarIconResultsList
  4. UISearchBarIconSearch

我希望这能帮助你...

Objective-c相关问答推荐

在 Objective-C 中完成受保护属性的解决方法

KVO - 如何判断对象是否是观察者?

UITableViewCell 突出显示时使标签的背景清晰

判断正在使用的应用程序版本

NSTimeInterval 格式

更改 UIDatePicker 字体 colored颜色 ?

判断对象是 NSArray 还是 NSDictionary

在 Xcode 中打破 EXC_BAD_ACCESS?

使用 UIView animateWithDuration 进行动画处理时无法 UIButton

NSString:从字符串中删除 UTF-8 重音的简单方法?

dyld:找不到符号:try 运行 iOS 应用程序时的 _NSURLAuthenticationMethodClientCertificate

为什么 NSOrderedSet 不继承自 NSSet?

显示启动画面的时间超过默认秒数

如何将 NSOperationQueue 与 NSURLSession 一起使用?

如何减小使用 UIImagePickerController 创建的视频的文件大小?

如何修复UIPopoverController 已弃用警告?

笔尖中的原型单元而不是故事板

为什么 Select Emacs/Vim/Textmate? Xcode 还不够好吗?

UICollectionView 断言失败

在 iOS 8 中使用 NSMutableAttributedString 的字符串的下划线部分不起作用