Das ist mein UISegmentedControl
in Swift geschrieben:Wie kann ich den Stil für UISegmentedControl ändern, wenn dieser vom Benutzer in Swift ausgewählt wurde?
ich es mit dem folgenden Code erstellt:
let selectedAttributes: NSDictionary = [
NSForegroundColorAttributeName: UIColor.black,
NSFontAttributeName: fontForSegmentedControl!
]
let normalAttributes: NSDictionary = [
NSForegroundColorAttributeName: UIColor.gray,
NSFontAttributeName: fontForSegmentedControl!
]
mySegmentedControl.setTitleTextAttributes(selectedAttributes as [NSObject : AnyObject], for: UIControlState.selected)
mySegmentedControl.setTitleTextAttributes(normalAttributes as [NSObject : AnyObject], for: UIControlState.normal)
und die Erweiterung für die Grenzen zu entfernen, ist hier:
extension UISegmentedControl {
func removeBorders() {
setBackgroundImage(imageWithColor(color: UIColor.white/*backgroundColor!*/), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: tintColor!), for: .selected, barMetrics: .default)
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
}
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context!.setFillColor(color.cgColor);
context!.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image!
}
}
Aber da stimmt etwas nicht.
Wenn ich tippen (und halten) die ONE
oder TWO
es ändert sich die Hintergrundfarbe auf diese (für die Zeit vom Finger des Benutzers berührt hat wird):
Ich vermisse einige Code für Ändern des Stils für die ausgewählte (vorübergehend gedrückte) Option in UISegmentedControl
.
Wie kann ich die dunkelgraue Auswahl entfernen und sie mit klarer Farbe belassen?
Ich habe es versucht und es funktioniert fast :) jetzt, wenn Benutzer die Option drückt, die nicht ausgewählt ist - es wird jedoch nicht in grau hervorheben - es gibt immer noch eine Möglichkeit, die Option, die gerade ausgewählt ist, zu drücken und es ändert den Hintergrund in grau - weißt du, wie ich es beheben könnte ? – user3766930
@ user3766930 sicher, Sie können es tun, ich aktualisierte die Antwort. –