AussehenWenn ContainedIn in Swift
Ich versuche meine konvertieren app für die schnelle Sprache.
Habe ich diese code-Zeile:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
setTitleTextAttributes:textDictionary
forState:UIControlStateNormal];
Wie es zu konvertieren, um Swift?
In Apple docses gibt keine solche Methode.
InformationsquelleAutor der Frage AlexZd | 2014-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update für iOS 9:
Wenn Sie eine Ausrichtung auf iOS 9+ (als Xcode-7 b1), es ist eine neue Methode in der
UIAppearance
Protokoll, welche nicht mit varargs:Die verwendet werden können, etwa so:
Wenn Ihr noch Unterstützung-iOS 8 oder früher, verwenden Sie die folgende original-Antwort auf diese Frage.
Für iOS 8 & 7:
Diese Methoden nicht zur Verfügung stehen, Swift, weil die Obj-C varargs-Methoden sind nicht kompatibel mit Swift (siehe http://www.openradar.me/17302764).
Schrieb ich einen nicht-variadic workaround funktioniert bei Swift (wiederholte ich die gleiche Methode für
UIBarItem
die nicht absteigen ausUIView
):—
Nur sicher sein, um
#import "UIAppearance+Swift.h"
in Ihrer bridging-header.Dann rufen die von Swift (zum Beispiel):
InformationsquelleAutor der Antwort Alex Pretzlav
ios 10 swift 3
InformationsquelleAutor der Antwort Ramazan YILMAZ
Für iOS 8 & 7:
Verwende ich eine Kategorie basierend auf Alex ' s Antwort zu geben mehrere Container. Dies ist ein workaround, bis Apple offiziell unterstützt
appearanceWhenContainedIn
im Swift.UIAppearance+Swift.h
UIAppearance+Swift.m
Dann fügen Sie
#import "UIAppearance+Swift.h"
zu Ihrer bridging-header.Zur Nutzung von Swift:
War es gut, wenn ich könnte einen Weg finden, mit CVarArgTypeaber ich fand keine "saubere" Lösung.
InformationsquelleAutor der Antwort Yoichi Tagaya
Hier ist eine weniger hässlich, aber immer noch hässlich, Abhilfe inspiriert von @tdun.
AppearanceBridger
.AppearanceBridger
namens+(void)setAppearance
und setzen Sie die Objective-C-code Aussehen, die in dieser Methode. Zum Beispiel:AppearanceBridger.setAppearance()
und Sie sollten gut zu gehen!Hoffe, das funktioniert gut für Menschen, die es sehen.
InformationsquelleAutor der Antwort Baub
Hier ist ein hässlicher workaround-Lösung habe ich verwendet....
Nur eine Objective-C, Cocoa Touch Class (UIViewController), benannt, was Sie wollen.
Ich mit dem Namen mine
WorkaroundViewController
...Nun in (
WorkaroundViewController.m
):Führen Sie die Objective-C-code Aussehen für
.appearanceWhenContainedIn()
(hier mein Beispiel):Dann erstellen Sie einen bridging-header für Ihre schnelle Projekt, und dann initialisieren Sie Ihren Objective-C-ViewController in Ihrer Swift-code, wie dies (wieder nur mein Beispiel):
Dann bist du fertig! Lassen Sie mich wissen, wenn es bei dir funktioniert... Wie ich schon sagte, es ist hässlich, aber funktioniert!
InformationsquelleAutor der Antwort tcd
Diese können erweitert werden, um jede Klasse, entspricht der UIAppearance Protokoll-nicht nur UIViews. Hier ist also eine allgemeinere version:
UIAppearance+Swift.h
UIAppearance+Swift.m
InformationsquelleAutor der Antwort Eddie K
Habe ich eine repo für Sie Jungs, die wollen verwenden Sie
CocoaPods
:Fügen Sie diese in Ihre
Podfile
:Import in Ihre Klasse:
Referenz:
https://github.com/levantAJ/UIViewAppearanceSwift
InformationsquelleAutor der Antwort Tai Le
Es scheint Swift (zumindest so, wie der Beta5) nicht in der Lage, Sie zu unterstützen aus mir unbekannten Gründen. Vielleicht ist die Sprache-Funktion benötigt, ist noch im Gange, so kann ich nur annehmen, Sie ließ es sich der Oberfläche für einen guten Grund. Wie Sie sagten, nach den docs ist es weiterhin verfügbar, in ObjC. Wirklich enttäuschend.
InformationsquelleAutor der Antwort hlfcoding
Swift 4: iOS 9+
InformationsquelleAutor der Antwort Maksim Kniazev
Diese:
Edit: appearanceWhenContainedIn entfernt wurde, in Swift. Diese Antwort war für die Beta 5 zum ändern der Darstellung des Textes aller bar-Tasten.
InformationsquelleAutor der Antwort spinillos
Sollten Sie in der Lage, nur übersetzen Sie die
Objective-C
syntax inSwift
syntax.In swift die Methoden erklärt werden sollte, wie diese:
So können Sie versuchen, diese:
Ich immer noch herauszufinden, ob dies die saubere Art und Weise zu nennen, eine Klasse Methode in
Swift
obwohl.Hoffe, das hilft,
InformationsquelleAutor der Antwort Zedenem