To jest mój UISegmentedControl
napisany w Swift:Jak mogę zmienić styl dla UISegmentedControl po wybraniu przez użytkownika w Swift?
Stworzyłem ją z następującego kodu:
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)
i rozszerzenia do usuwania granic jest tutaj:
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!
}
}
Ale jest w tym coś złego.
Kiedy dotknij (i przytrzymaj) ONE
lub TWO
zmienia kolor tła na to (po raz to dotknięcie palcem użytkownika):
Brakuje mi jakiś kod zmiana stylu dla wybranej (tymczasowo wciśniętej) opcji w UISegmentedControl
.
Jak mogę usunąć ciemnoszary wybór i pozostawić go z jasnym kolorem?
Próbowałem go i prawie działa :) teraz, gdy użytkownik naciśnie opcję, która nie jest aktualnie wybrana - nie będzie podświetlona na szaro, jednak - nadal istnieje możliwość naciśnięcia aktualnie wybranej opcji i zmienia kolor tła na szary - czy wiesz, jak to naprawić ? – user3766930
@ user3766930 Oczywiście, możesz to zrobić, zaktualizowałem odpowiedź. –