在我的iOS5的iPhone应用程序,我设置使用下面的代码搜索栏的色调颜色:
searchBar.tintColor = UIColorMake(@"#EFEFEF");
#EFEFEF的RGB值是(239239239)
它的工作的罚款。 但是,当取消按钮上的文字“取消”是不可见的。 我只能跟定制上透明的黑白文本取消按钮?
是不是可以定制?
在我的iOS5的iPhone应用程序,我设置使用下面的代码搜索栏的色调颜色:
searchBar.tintColor = UIColorMake(@"#EFEFEF");
#EFEFEF的RGB值是(239239239)
它的工作的罚款。 但是,当取消按钮上的文字“取消”是不可见的。 我只能跟定制上透明的黑白文本取消按钮?
是不是可以定制?
您可以搜索UISearchBar
子视图,找到了取消按钮,这是危险这样做,因为按钮可以改变例如,你可以在你添加此viewWillAppear
- (void) viewWillAppear:(BOOL)animated
{
//show the cancel button in your search bar
searchBar.showsCancelButton = YES;
//Iterate the searchbar sub views
for (UIView *subView in searchBar.subviews) {
//Find the button
if([subView isKindOfClass:[UIButton class]])
{
//Change its properties
UIButton *cancelButton = (UIButton *)[sb.subviews lastObject];
cancelButton.titleLabel.text = @"Changed";
}
}
}
正如我以前说过,这可能改变,其一个黑客这样做,你最好与原来的坚持,或者创建自己的搜索栏。
您可以通过使用外观代理自定义在iOS 5上的取消按钮。 您需要更改的外观UIBarButtonItem
包含在时UISearchBar
。 例如更改取消按钮,你可以使用的标题字体:
NSDictionary *attributes =
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
[UIFont systemFontOfSize:12], UITextAttributeFont,
nil];
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]
setTitleTextAttributes:attributes forState:UIControlStateNormal];
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]
setTitleTextAttributes:attributes forState:UIControlStateHighlighted];
由于iOS5的可以编辑的导航栏,工具栏的TabBar和一些与此代码...
NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor darkGrayColor],
UITextAttributeTextColor,
[UIColor whiteColor],
UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];
我haven't一个搜索栏测试,但它应该工作类似。
此方法适用于IOS7
for (UIView *view in searchBar.subviews)
{
for (id subview in view.subviews)
{
if ( [subview isKindOfClass:[UIButton class]] )
{
// customize cancel button
UIButton* cancelBtn = (UIButton*)subview;
[cancelBtn setEnabled:YES];
break;
}
}
}
勾选此https://stackoverflow.com/a/18150826/1767686