【问题标题】:How to change UISegmentedController Background Color如何更改 UISegmentedControl 背景颜色
【发布时间】:2022-01-21 10:43:03
【问题描述】:

尝试将 UISegmentedController 背景颜色更改为白色。 它没有反映它。

    if #available(iOS 13.0, *) {
        self.workDaySegmentedController.backgroundColor = .white
        self.workDaySegmentedController.layer.borderWidth = 1.0
        self.workDaySegmentedController.layer.cornerRadius = 1.0
        self.workDaySegmentedController.layer.borderColor = UIColor.blue.cgColor
        self.workDaySegmentedController.layer.masksToBounds = true
        self.workDaySegmentedController.backgroundColor = .white
        self.workDaySegmentedController.layer.backgroundColor = UIColor.white.cgColor
    }

如何将白色背景设置为分段颜色。

如下图所示

【问题讨论】:

标签: ios swift uisegmentedcontrol


【解决方案1】:

class ViewController: UIViewController {
    
    
    
    @IBOutlet weak var workDaySegmentedController: UISegmentedControl!
    
   override func viewDidLoad() {
       super.viewDidLoad()
       workDaySegmentedController.setLayout(tintColor: .blue)
    }
}

extension UISegmentedControl {

    func setLayout(tintColor: UIColor) {
        if #available(iOS 13, *) {
            let background = UIImage(color: .clear, size: CGSize(width: 2, height: 30))
            let divider = UIImage(color: tintColor, size: CGSize(width: 2, height: 30))
            self.setBackgroundImage(background, for: .normal, barMetrics: .default)
            self.setBackgroundImage(divider, for: .selected, barMetrics: .default)
            self.setDividerImage(divider, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
            self.layer.borderWidth = 2
            self.layer.borderColor = tintColor.cgColor
            self.setTitleTextAttributes([.foregroundColor: tintColor], for: .normal)
            self.setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)

    } else {
        self.tintColor = tintColor
        }
    }
}

extension UIImage {

    convenience init(color: UIColor, size: CGSize) {

        UIGraphicsBeginImageContextWithOptions(size, false, 1)
        color.set()
        
        let context = UIGraphicsGetCurrentContext()!
        context.fill(CGRect(origin: .zero, size: size))
        
        
        let image = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        self.init(data: image.pngData()!)!
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2018-02-13
    • 2012-01-02
    相关资源
    最近更新 更多