2017-12-11 2 views
0

Ich habe ein Design gegeben, wo jeder UISwitch einen thumbTintColor für es ist ein Zustand und einen anderen für den Aus-Zustand hat. Was ich versuche zu erreichen, ist die Implementierung dieses Designs, aber bis jetzt weiß ich nicht, warum die Animation, die den Daumen von rechts nach links bewegen soll oder umgekehrt, aus Mangel an passenderen Wörtern komplett wird durcheinander.Animation zwischen Änderungen des Ein/Aus-Status von UISwitch gebrochen wegen Änderung der thumbTintColor

Grundsätzlich, wenn ein Schalter angetippt wird, wird sein Daumen, anstatt von einem Ende zum anderen zu gleiten, verzerrt und erscheint sofort am anderen Ende des Schalters. Dies ist so nah wie ich die Verzerrung beschreiben kann, ohne ein Video der tatsächlichen Anomalie zu liefern.

Meine, wenn auch wild, Vermutung ist, dass dies etwas mit dem Innenleben von UIKit und animatable, oder dem Fehlen von Eigenschaften bestimmter UIControls zu tun. Die einzige Schlussfolgerung, zu der ich gekommen bin, ist bisher, den Standard UISwitch zu entfernen und eine benutzerdefinierte UIControl zu machen, die für etwas so Triviales übertrieben erscheint.

Der Code dieses Verhalten zu reproduzieren ist in dem folgende Verfahren mit einem UISwitch in einer Zelle Tableview:

@IBAction func allWheelDriveSwitchValueChanged(_ sender: UISwitch) { 
    if sender.isOn { 
     sender.thumbTintColor = AppColor.myYellow 
    } else { 
     sender.thumbTintColor = AppColor.darkGray 
    } 
} 

Wo AppColor eine Enumeration mit voreingestellten UIColor Objekten. Ich habe versucht, dies in Animationsblöcke mit dem Aufruf layoutIfNeeded von der contentView der Zelle setzen, aber ohne Erfolg.

Jede Hilfe oder Einsicht würde sehr geschätzt werden.

Antwort

0

haben Sie diese

@IBAction func allWheelDriveSwitchValueChanged(_ sender: UISwitch) { 
    if sender.isOn { 
     sender.thumbTintColor = UIColor.yellow 
    } else { 
     sender.thumbTintColor = UIColor.darkGray 
    } 
} 

statt

versuchte dabei
@IBAction func allWheelDriveSwitchValueChanged(_ sender: UISwitch) { 
    if sender.isOn { 
     sender.thumbTintColor = AppColor.myYellow 
    } else { 
     sender.thumbTintColor = AppColor.darkGray 
    } 
} 

Das ist die Sache mit Aufzählungen:

Der Nachteil der rohen Art zu fallen ist, dass Sie zur Verfügung stellen müssen einige Logik zum Parsen der bekannten Enum-Werte. Der Vorteil ist jedoch, dass Sie etwas anderes in einem einzigen unbekannten Fall passen, während die tatsächliche „unbekannt“ Wert zur Verfügung zu halten später für

+0

Hallo verwenden, habe ich versucht, und das Problem weiterhin besteht. Diese Aufzählung ist nur ein Wrapper für eine statische Methode, die Hex-Werte UIColors zuordnet und diese Farben als statische Requisiten speichert. Es hat eigentlich keine Fälle, nur eine einzige Methode und in jeder Hinsicht könnte es auch eine Struktur gewesen sein, so dass sie völlig unabhängig von meinem Problem ist. Trotzdem danke. –

Verwandte Themen