webentwicklung-frage-antwort-db.com.de

Mit UISearchBar Minimal Style wird der Farbton beim Tippen schwarz

Wenn ich meine UISearchBar in iOS7 auf minimal style stelle, wird der Farbton schwarz und der Text kann nicht gelesen werden, da Schwarz auf Schwarz steht.

Dies führt nicht zum gewünschten Ergebnis. Der Farbton bleibt bei Auswahl schwarz ...

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

15
Apollo

Ich hatte das gleiche Problem und habe es einige Stunden lang versucht, die Schlussfolgerung ist, dass UISearchBar ziemlich fehlerhaft sind! Besonders im "Minimal" -Modus.

Mein Workaround ist:

  • Setzen Sie den Suchstil auf Standard (Vorstehend).
  • Setze das BackgroundImage (nicht BackgroundColor) auf ein transparentes Bild oder erstelle ein UIImage mit [UIColor clearColor]
  • Setzen Sie die BarTintColor auf [UIColor blackColor]
  • Setze die TintColor auf [UIColor whiteColor]

Die Suchleiste sieht im Normalmodus wie ein Minimalmodus aus, und der Hintergrund ist bei Auswahl weiß, sodass Sie den schwarzen Text sehen können.

Die Problemumgehung ist nicht perfekt, sie funktioniert nur, die Hoffnung kann helfen.

12
Rex Lam

ich hatte diesen Fehler und nach einigen Recherchen bekomme ich diesen Code, der funktioniert! iOS 7+

//change searchbar color
[searchBar setSearchBarStyle:UISearchBarStyleMinimal];
[searchBar setBackgroundImage:[UIImage imageWithCGImage:(__bridge CGImageRef)([UIColor clearColor])]];
11
Cayke Prudente
 // 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];
}
5
Sabareesh
searchField.searchBarStyle = UISearchBarStyleMinimal;
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];
[searchField setBarTintColor:[UIColor blackColor]];

Erstellt eine schwarz getönte Suchleiste mit weißem Text.

Die appearanceWhenContainedIn muss aufgerufen werden, nachdem die searchBar erstellt und der minimale Stil festgelegt wurde, damit er tatsächlich wirksam wird.

2
Yerk

Wenn Sie sowohl barstyle als auch searchbarstyle festlegen, wird searchBar auf den erwarteten minimalen Stil eingestellt

self.itemsSearchController.searchBar.barStyle = UIBarStyleDefault;
self.itemsSearchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
1

Sie können die Eigenschaften der Suchleiste nur bearbeiten, um zu verhindern, dass die Suchleiste transparent wird:

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];

Der Einfachheit halber wird im Folgenden imageWithImage: withTintColorMethod definiert:

@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;
}
0
coolcool1994

Ich hatte das gleiche problem Meine Suchleiste hatte einen weißen Cursor, aber als ich mit der Eingabe anfing, war der Text schwarz. Auch mein Suchsymbol war grau statt weiß. Ich habe die Lösung fast zufällig gefunden.

searchBar.setImage(UIImage(), for: .clear, state: .normal)
0
andrei