webentwicklung-frage-antwort-db.com.de

Aussehen und Verhalten der iOS 13 UISearchBar

Ich habe mein UISearchBar wie folgt eingerichtet:

searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false // Allow user to tap on results
searchController.searchBar.placeholder = "Search patients" // Placeholder
searchController.searchBar.barStyle = .blackOpaque
searchController.searchBar.tintColor = colors.text // Cancel button tint

navigationItem.searchController = searchController // Set the searchController
navigationItem.hidesSearchBarWhenScrolling = true // Auto-hide search when user scrolls

So sieht es unter iOS 12 aus: iOS 12 appearance vs iOS 13: enter image description here Was hat sich in iOS 13 geändert? Ich habe versucht, die verschiedenen barStyles durchzugehen und auch .isTranslucent to false - auch keine Auswirkung. Der Hell/Dunkel-Modus ändert auch nichts.

Die andere Änderung ist das Ausblenden der Suchleiste - unter iOS 12 würde sich die Suchleiste ausblenden, wenn ich ein wenig nach oben scrolle (egal, ob die Tabelle gefüllt ist oder nicht). Unter iOS 13 kann die Suchleiste nicht mehr ausgeblendet werden, sobald sie angezeigt wurde (dh der Benutzer hat nach unten gewischt). Kennt jemand auch eine Lösung dafür?

19
user7987142

Ich habe ein ähnliches Problem mit dir. Ich weiß nicht, warum dies derzeit in iOS 13 passiert und in älteren Versionen ordnungsgemäß funktioniert. Aber ich habe die Lösung gefunden, indem ich diese Funktion zu Ihrer Suchleiste hinzugefügt habe.

if #available(iOS 13.0, *) {
   searchBar.searchTextField.backgroundColor = UIColor.white
}

Vorschau nach dem Fixieren:

(before fixingafter fixing

13
Avendi Sianipar

Wie wäre es, searchBarStyle als default zu verwenden und die Hintergrundfarbe searchTextField zu ändern?

if #available(iOS 13.0, *) {
    searchBar.searchBarStyle = .default
    searchBar.searchTextField.backgroundColor = UIColor.black.withAlphaComponent(0.1)
}
8
Tai Le

Zum globalen Einstellen wie in AppDelegate:

if #available(iOS 13, *) {
    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = .anyColor
}
3
RyuX51

searchController.searchBar.searchTextField.backgroundColor = UIColor.black erledigt den Job als Workaround. Der Selektor ist neu in iOS 13.

Ich habe ohnehin einen Bericht über den Feedback-Assistenten eingereicht, da ich glaube, dass dies ein unerwartetes Verhalten ist.

3
user7987142