Dav*_*ave 13 objective-c uisearchbar ios
我有一个UISearchBar包含在a中,UIView并UIView已被分配给UITableView's tableHeaderView.我试图设计样式UISearchBar如下:

走出大门,这就是它的样子:

关于如何设计风格UISearchBar,搜索领域等等,有很多SO问题和答案,其中一些特别关注背景.其中许多涉及遍历UISearchBar's subviews,查找UISearchBarBackground(或_UISearchBarSearchFieldBackgroundView)对象,并直接设置其背景颜色.我正在尝试找到支持的API来执行此操作,但是......
该setSearchFieldBackgroundImage:forState:方法似乎有很大的潜力,但这是我使用1px白色(或透明)图像时得到的UIControlStateNormal:

有关如何使其工作的任何想法?我很感激有人指着我回答这个问题的SO帖子,但我确实认为我已经把它们都读了.万分感谢.
您可以使用appearanceWhenContainedIn来定位元素,而无需遍历视图层次结构.就像是:
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setBackgroundColor:[UIColor whiteColor]];
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor lightGrayColor]];
Run Code Online (Sandbox Code Playgroud)
更新:
由于appearanceWhenContainedIn现在已过时,使用
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar self]]] <your setter here>];
Run Code Online (Sandbox Code Playgroud)
请尝试以下代码
\n\n[[UISearchBar appearance]setBackgroundImage:[UIImage imageNamed:@\xe2\x80\x9csearchbar_bg.png"]];\nfor (UIView *searchbuttons in searchBar.subviews) {\n\n if ([searchbuttons isKindOfClass:[UIButton class]]) {\n\n UIButton *cancelbutton = (UIButton *)searchbuttons;\n [cancelbutton setBackgroundImage:[UIImage imageNamed:@\xe2\x80\x9ccanelBtn.png"] forState:UIControlStateNormal];\n }\n}\n\n\n UITextField *searchField = [searchBar valueForKey:@"_searchField"];\n searchField.background = [UIImage imageNamed:@"bg.png"];\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
15121 次 |
| 最近记录: |