Benutzerdefinierte Schrift und Farbe in UITableViewRowAction ohne Storyboard

9

Ich habe klassische TableView, wo Sie Element löschen können, wenn Sie streichen und dann auf die Schaltfläche klicken. Ich weiß, wie man einen benutzerdefinierten Hintergrund für die Zelle einstellt, aber ich kann nicht finden, wie ich benutzerdefinierte Schrift und Farbe dafür einstellen kann.

Danke für Ihre Hilfe!

%Vor%     
Vlastimil Fiser 14.03.2015, 13:11
quelle

7 Antworten

10

Nun, der einzige Weg, den ich gefunden habe, um eine benutzerdefinierte Schriftart zu setzen, ist die Verwendung der appearanceWhenContainedIn Methode des UIAppearance Protokolls. Diese Methode ist in Swift noch nicht verfügbar, also müssen Sie es in Objective-C machen.

Ich habe eine Klassenmethode in einer Objective-C-Klassenklasse erstellt, um sie einzurichten:

%Vor%

Das funktioniert, aber es ist definitiv nicht ideal. Wenn Sie UIView nicht in die Eingrenzungshierarchie aufnehmen, wirkt sich dies auch auf den Offenlegungsindikator aus (ich wusste nicht einmal, dass der Offenlegungsindikator eine UIButton-Unterklasse ist). Wenn Sie eine UIButton in Ihrer Zelle haben, die sich in einer Unteransicht in der Zelle befindet, wird diese Schaltfläche ebenfalls von dieser Lösung betroffen.

In Anbetracht der Komplikationen ist es möglicherweise besser, nur eine der besser anpassbaren Open-Source-Bibliotheken für Tabellenzellen-Swipe-Optionen zu verwenden.

    
Logan Gauthier 21.04.2015 16:21
quelle
2

Wenn Sie die Debug-Ansichtshierarchie von XCode verwenden, um zu sehen, was in UITableView passiert, wenn die Swipe-Schaltflächen aktiv sind, sehen Sie, dass UITableViewRowAction-Elemente in die Schaltfläche _UITableViewCellActionButton in UITableViewCellDeleteConfirmationView übersetzt werden. Eine Möglichkeit, die Eigenschaften der Schaltfläche zu ändern, besteht darin, sie abzufangen, wenn sie zu UITableViewCell hinzugefügt wird. Schreiben Sie in Ihrer UITableViewCell abgeleitete Klasse etwas wie folgt:

%Vor%     
apetrovic 21.04.2016 08:40
quelle
2

Ich möchte meine Lösung für ObjC teilen, das ist nur ein Trick, funktioniert aber wie erwartet für mich.

%Vor%

[YJColor colorWithHexString:<NSString>]; dient nur dazu, Hex-Strings in UIColor zu konvertieren.

Überprüfen Sie den Screenshot der Beispielausgabe.

    
0yeoj 24.01.2017 06:35
quelle
0

Dies scheint zu funktionieren, zumindest für die Einstellung der Schriftfarbe:

%Vor%     
Alexandru 22.03.2016 23:08
quelle
0
___ qstnhdr ___ Benutzerdefinierte Schrift und Farbe in UITableViewRowAction ohne Storyboard ___ qstntxt ___

Ich habe klassische TableView, wo Sie Element löschen können, wenn Sie streichen und dann auf die Schaltfläche klicken. Ich weiß, wie man einen benutzerdefinierten Hintergrund für die Zelle einstellt, aber ich kann nicht finden, wie ich benutzerdefinierte Schrift und Farbe dafür einstellen kann.

Danke für Ihre Hilfe!

%Vor%     
___ answer36166921 ___

Dies scheint zu funktionieren, zumindest für die Einstellung der Schriftfarbe:

%Vor%     
___ answer36764202 ___

Wenn Sie die Debug-Ansichtshierarchie von XCode verwenden, um zu sehen, was in UITableView passiert, wenn die Swipe-Schaltflächen aktiv sind, sehen Sie, dass UITableViewRowAction-Elemente in die Schaltfläche %code% in %code% übersetzt werden. Eine Möglichkeit, die Eigenschaften der Schaltfläche zu ändern, besteht darin, sie abzufangen, wenn sie zu %code% hinzugefügt wird. Schreiben Sie in Ihrer %code% abgeleitete Klasse etwas wie folgt:

%Vor%     
___ answer31742176 ___

Hier ist ein Swift Code, der hilfreich sein könnte:

%Vor%

Damit werden alle Schaltflächen in Ihrer Anwendung bearbeitet.

    
___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind. ___ antwort43907268 ___
%Vor%     
___ tag123iphone ___ Verwenden Sie diesen Tag NICHT, es sei denn, Sie wenden sich speziell an Apple's iPhone und / oder iPod touch. Verwenden Sie für nicht hardwareabhängige Fragen das Tag [ios]. Weitere zu betrachtende Tags sind [xcode] (aber nur, wenn es sich um die IDE selbst handelt), [swift], [objective-c] oder [cacao-touch] (aber nicht [cocoa]). Bitte verzichten Sie auf Fragen zum iTunes App Store oder zu iTunes Connect. Wenn Sie C # verwenden, markieren Sie mit [mono]. ___ tag123swift ___ Swift ist eine universelle Open-Source-Programmiersprache, die von Apple Inc. für ihre Plattformen und Linux entwickelt wurde. Verwenden Sie das Tag nur für Fragen zu Sprachfunktionen oder für Code in Swift. Verwenden Sie die Tags [ios], [osx], [watch-os], [tvos], [cocoa-touch] und [cocoa] für (sprachunabhängige) Fragen zu den Plattformen oder Frameworks. ___ tag123passableviewrowaction ___ hilf uns dieses Wiki zu bearbeiten ___ answer34565450 ___

Ich denke, dass Sie diese Methode verwenden können, um die Darstellung nur in einem (oder mehreren, Sie können es definieren) Viewcontrollern zu ändern:

%Vor%

Ich hoffe, das hat geholfen.

    
___ tag123uitableview ___ UITableView ist eine Klasse zum Anzeigen und Bearbeiten von Informationslisten auf iOS. Eine Tabellenansicht zeigt Elemente in einer einzelnen Spalte an. UITableView ist eine Unterklasse von UIScrollView, mit der Benutzer durch die Tabelle scrollen können, obwohl UITableView nur vertikales Scrollen erlaubt. ___ answer41821519 ___

Ich möchte meine Lösung für ObjC teilen, das ist nur ein Trick, funktioniert aber wie erwartet für mich.

%Vor%

%code% dient nur dazu, Hex-Strings in UIColor zu konvertieren.

Überprüfen Sie den Screenshot der Beispielausgabe.

    
___ answer29777904 ___

Nun, der einzige Weg, den ich gefunden habe, um eine benutzerdefinierte Schriftart zu setzen, ist die Verwendung der %code% Methode des %code% Protokolls. Diese Methode ist in Swift noch nicht verfügbar, also müssen Sie es in Objective-C machen.

Ich habe eine Klassenmethode in einer Objective-C-Klassenklasse erstellt, um sie einzurichten:

%Vor%

Das funktioniert, aber es ist definitiv nicht ideal. Wenn Sie UIView nicht in die Eingrenzungshierarchie aufnehmen, wirkt sich dies auch auf den Offenlegungsindikator aus (ich wusste nicht einmal, dass der Offenlegungsindikator eine UIButton-Unterklasse ist). Wenn Sie eine UIButton in Ihrer Zelle haben, die sich in einer Unteransicht in der Zelle befindet, wird diese Schaltfläche ebenfalls von dieser Lösung betroffen.

In Anbetracht der Komplikationen ist es möglicherweise besser, nur eine der besser anpassbaren Open-Source-Bibliotheken für Tabellenzellen-Swipe-Optionen zu verwenden.

    
___
Nrv 11.05.2017 05:32
quelle
-1

Hier ist ein Swift Code, der hilfreich sein könnte:

%Vor%

Damit werden alle Schaltflächen in Ihrer Anwendung bearbeitet.

    
alexdd55 31.07.2015 09:02
quelle
-1

Ich denke, dass Sie diese Methode verwenden können, um die Darstellung nur in einem (oder mehreren, Sie können es definieren) Viewcontrollern zu ändern:

%Vor%

Ich hoffe, das hat geholfen.

    
Septronic 02.01.2016 11:38
quelle