UISearchBar Минимальный стиль делает оттенок черного при наборе текста
Когда я устанавливаю свой UISearchBar
в minimal style
в iOS7, когда я его выбираю, оттенок становится черным, и текст невозможно прочитать, потому что черный на черном.
Это не дает желаемого результата. При выборе оттенка по-прежнему остается черным...
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
{
// set bar style
_sendToSearchBar.barStyle = UIBarStyleDefault;
// set bar transparancy
_sendToSearchBar.translucent = NO;
// set bar color
_sendToSearchBar.barTintColor = [UIColor whiteColor];
// set bar button color
_sendToSearchBar.tintColor = [UIColor whiteColor];
// set bar background color
_sendToSearchBar.backgroundColor = [UIColor whiteColor];
}
![enter image description here]()
Ответы
Ответ 1
У меня была такая же проблема, и я пробовал в течение нескольких часов, вывод UISearchBar довольно глючит! Особенно в "минимальном" режиме.
Мое обходное решение:
- Установите стиль поиска по умолчанию (выдающийся)
- Установите BackgroundImage (Not BackgroundColor) на прозрачное изображение или создайте UIImage с помощью
[UIColor clearColor]
- Установите BarTintColor на
[UIColor blackColor]
- Установите TintColor на
[UIColor whiteColor]
Панель поиска выглядит как минимальный режим в обычном режиме,
и фон будет белым при выборе, чтобы вы могли видеть текст черного цвета.
Обходной путь не совершенен, он просто работает, надеюсь, может помочь.
Ответ 2
У меня была эта ошибка, и после некоторого исследования я получил этот код, который работает! ios 7 +
//change searchbar color
[searchBar setSearchBarStyle:UISearchBarStyleMinimal];
[searchBar setBackgroundImage:[UIImage imageWithCGImage:(__bridge CGImageRef)([UIColor clearColor])]];
Ответ 3
// iOS7 and after
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
{
// set bar style
bar.barStyle = UIBarStyleBlack;
// set bar transparancy
bar.translucent = NO;
// set bar color
bar.barTintColor = [UIColor blackColor];
// set bar button color
bar.tintColor = [UIColor blackColor];
// set bar background color
bar.backgroundColor = [UIColor blackColor];
}
Ответ 4
searchField.searchBarStyle = UISearchBarStyleMinimal;
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];
[searchField setBarTintColor:[UIColor blackColor]];
Создает черную тонированную панель поиска с белым текстом.
appearanceWhenContainedIn
должен быть вызван после создания searchBar и установки минимального стиля для фактического вступления в силу.
Ответ 5
Я узнаю, что если вы установите как barstyle
, так и searchbarstyle
, searchBar превратится в ожидаемый минимальный стиль
self.itemsSearchController.searchBar.barStyle = UIBarStyleDefault;
self.itemsSearchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
Ответ 6
Вы можете просто изменить свойства панели поиска, чтобы предотвратить прозрачность панели поиска:
self.iSearchController.searchBar.searchBarStyle = UISearchBarStyleDefault;
self.iSearchController.searchBar.backgroundImage = [UIImage imageWithImage: [UIImage imageNamed:@"whiteBackgroundImage.png"] withTintColor:[UIColor blackColor]]; // or you can just create any random plain image with this color and use it with imageNamed: method.
self.iSearchController.searchBar.barTintColor = [UIColor blackColor];
Для вашего удобства imageWithImage: withTintColorMethod определяется ниже:
@implementation UIImage (Category)
+ (UIImage *) imageWithImage: (UIImage*) image withTintColor: (UIColor*) color {
UIImage *newImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIGraphicsBeginImageContextWithOptions(newImage.size, NO, newImage.scale);
[color set];
[newImage drawInRect:CGRectMake(0, 0, newImage.size.width, newImage.size.height)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}