web-dev-qa-db-fra.com

SelectedTintColor of Segment Control n'est pas un coin arrondi sur iOS 13

Le coin arrondi fonctionne très bien sur iOS 12 et inférieur, mais il est cassé sur iOS 13. J'ai créé une classe de contrôle de segment personnalisée.

Code:

class SegmentedControl: UISegmentedControl {
    override func layoutSubviews() {
      super.layoutSubviews()
      layer.cornerRadius = self.bounds.size.height / 2.0
      layer.borderColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1.0).cgColor
      layer.borderWidth = 1.0
      layer.masksToBounds = true
      clipsToBounds = true

   }
}

J'ai parcouru ce post - Comment changer les couleurs d'un segment dans un UISegmentedControl dans iOS 13? mais je n'ai trouvé aucune solution.

Capture d'écran: enter image description here

5
Amir Khan

Créer une classe personnalisée pour le segment

class CustomSegmentedControl: UISegmentedControl {
override func layoutSubviews() {
    super.layoutSubviews()
    layer.cornerRadius = self.bounds.size.height / 2.0
    layer.borderColor = use_your_custom_color
    layer.borderWidth = 1.0
    layer.masksToBounds = true
    clipsToBounds = true
    for i in 0...subviews.count - 1{
        if let subview = subviews[i] as? UIImageView{
            if i == self.selectedSegmentIndex {
                subview.backgroundColor = use_your_custom_color
            }else{
                subview.backgroundColor = .white
            }
        }
    }
}}

Peut-être que ce sera facile à utiliser comme ça

   @IBOutlet weak var reminderSegmentControl: CustomSegmentedControl!
0
amisha.beladiya