的按鈕在我的iOS5的iPhone應用程序,我使用下面的代碼設置搜索欄的色調顏色:iOS的自定義取消的UISearchBar
searchBar.tintColor = UIColorMake(@"#EFEFEF");
#EFEFEF的
RGB值是(239239239)
其工作精細。但是當取消按鈕出現時,文本「取消」不可見。我可以只使用透明黑白文本自定義取消按鈕嗎?
是否可以自定義?
的按鈕在我的iOS5的iPhone應用程序,我使用下面的代碼設置搜索欄的色調顏色:iOS的自定義取消的UISearchBar
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 7中找不到任何子視圖 – NSCry
這不是可取的,從iOS 5開始,處理此問題的更好方法是使用外觀代理作爲MariánČernýdescibes的答案。 –
由於iOS5的,你可以編輯的導航欄,工具欄的TabBar多用這種代碼的一些...
NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor darkGrayColor],
UITextAttributeTextColor,
[UIColor whiteColor],
UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];
我haven't一個搜索欄測試,但它應該工作類似。
不,它不。如果您查看搜索欄的外觀文檔,則不會提供用於更改搜索按鈕屬性的清除處理程序。 – csotiriou
您可以使用外觀代理自定義iOS 5上的取消按鈕。 如果包含在UISearchBar
中,則需要更改UIBarButtonItem
的外觀。 例如更改取消按鈕的標題字體,你可以使用:
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];
這應該是被接受的答案。這不是哈克,很明顯,它的工作原理。目前接受的答案可能會隨時中斷。 – csotiriou
這對於更改按鈕上的文字非常有用,但是如何更改按鈕本身?例如 - 更改按鈕尺寸 –
不幸的是,UISearchBar還包含一個清除按鈕(灰色圓圈,裏面有一個x),所以如果使用這種方法更改取消按鈕的背景圖像,清除按鈕也會受到影響。 –
這種方法在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;
}
}
}
我寫的答案,這個話題在這裏:http://stackoverflow.com/questions/19206757/how-to-change-textcolor-of-cancel-button-of-uisearchbar-in-ios7。只需使用SHSearchBar,這不像UISearchBar那樣痛苦。 – blackjacx