Wie kann ich die Textfarbe von a ändern UISearchBar
?
ios
swift
uisearchbar
MrTourkos
quelle
quelle
searchField
über KVC zugreifen .Wenn Sie die Textfarbe für UISearchBar im Storyboard (ohne Code) festlegen möchten, ist dies ebenfalls einfach (im Identitätsinspektor). Hier ist ein roter Text für die Suchleiste.
quelle
Arbeiten in Swift 4 für mich:
Swift 4.2, IOS 12:
quelle
Wenn Sie es nur auf einem dunklen Hintergrund lesbar machen müssen, können Sie den barStyle ändern. Durch Folgendes werden Text und Schaltflächen in der Suchleiste weiß:
quelle
quelle
Dies funktioniert bei mir unter iOS 11, Xcode 9:
Ich schreibe es in die,
AppDelegate
aber ich denke, es funktioniert, wenn Sie es auch woanders platzieren.quelle
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTextColor:[UIColor blueColor]];
folgt : Dies ist natürlich Objective-C, mit offensichtlicher Übersetzung in Swift unter Verwendung vonappearance(whenContainedInInstancesOf:)
Ich denke, der bequemste Weg ist, eine
textColor
Immobilie einzurichtenUISearchBar
.Verwendung
Sie würden es verwenden als:
quelle
Seit Xcode 11 und iOS 13 ist es möglich, direkt auf das Textfeld zuzugreifen:
Sie könnten Code schreiben, um ihn immer so zugänglich zu machen.
Sie können es auch nicht optional mit schwerwiegenden Fehlern machen, dieser Code wird seit iOS 7 bis iOS 13GM getestet. Aber ich würde mich einfach für die optionale Version entscheiden.
quelle
Versuche dies,
Ich verwende dies mit einer App für iOS 11.
[Update] Ich habe festgestellt, dass die App bei älteren Versionen (<iOS 13) abstürzt. Der Compiler hat sich jedoch nie über die Versionsprüfung beschwert. Bitte erklären Sie jemandem, warum dies passiert ist.
quelle
Sie können dies tun, indem Sie auf das UITextField in der Suchleiste zugreifen und dann dessen Hintergrundfarbe, Textfarbe und alle anderen UITextField-Eigenschaften ändern
Fügen Sie die folgende Erweiterung hinzu, um auf das Textfeld zuzugreifen
quelle
Ich habe einige der oben beschriebenen Lösungen ausprobiert, aber sie haben nicht funktioniert (ich denke, mehr).
Wenn Sie nur mit iOS 13 umgehen möchten:
mySearchBar.searchTextField.textColor = .red
Aber wenn Sie auch mit älterem iOS umgehen möchten, habe ich Folgendes getan:
Erstellen Sie eine benutzerdefinierte
UISearchBar
Klasse mit dem Namen "SearchBar : UISearchBar, UISearchBarDelegate
DiesSearchBar
" enthält dieUISearchBarDelegate
Methoden, die ich verarbeiten möchte, und derendelegate
Satz.Und ich füge der Klasse hinzu:
Kurze Erklärung:
Mit iOS13 können Sie jetzt auf das
UITextField
Dankeschön zugreifenUISearchBar.searchTextField
, das vom Typ istUISearchTextField
, von dem es erbtUITextField
.Da ich meine Hierarchie kenne, weiß ich,
textField
dass dies nicht der Fall sein wirdnill
für ältere Versionen geeignet bin. In beiden Fällen erhalte ich ein Textfeld, das ich problemlos anpassen kann und das heute an jeder Version von 9 bis 13 arbeitet.Hier ist der vollständige Code, der benötigt wird, damit es funktioniert:
Sie können auch einige Anpassungen vornehmen,
SearchBar
indem Sie diese hinzufügen auf:Dann setzen Sie es auf das XIB / Storyboard und behandeln es so, als wäre es einfach
UISearchBar
(wenn Sie die Delegierten nicht vergessen haben!).quelle
// Versuch es mit diesem Kerl
quelle
Hier ist eine Xamarin.iOS C # -Version des Ansatzes "find the UITextField". Es stürzt nicht ab, wenn das UITextField in der zukünftigen Hierarchie der iOS-Ansicht verschwindet.
quelle
(Diese Lösung wurde nur für Xcode 10 und iOS 12 getestet.) Fügen Sie eine Erweiterung hinzu, um auf das Textfeld der Suchleiste zuzugreifen:
Verwenden Sie dann diese Eigenschaft, um die Textfarbe des Textfelds in Ihrer Suchleiste festzulegen:
// BEARBEITEN
Der obige Code funktioniert nicht für iOS 13. Eine bessere Möglichkeit, dies zu handhaben, ist die Verwendung von:
quelle
In meiner Situation ist die Lösung
quelle
Obj-C
Swift 4.x.
quelle
Swift 5.2 & iOS 13.3.1: -
Es funktioniert gut.
quelle
Swift 5:
searchBar[keyPath: \.searchTextField].textColor = UIColor(...)
quelle
Swift 5 Xcode 11.4 iOS 13.4
quelle