之前項目中使用UISegmentedControl樣式劝篷,修改了選中的樣式青瀑,如圖一
在iOS13中 堡纬,UISegmentedControl默認樣式變?yōu)榘椎缀谧肿罚鐖D二
解決方法:
extension UISegmentedControl {
? ? public func ensureiOS12Style() {
? ? ? ? if#available(iOS13, *) {
? ? ? ? ? ? lettintColorImage =UIColor.white.asImage(CGSize.init(width:self.wk_size.width, height:self.wk_size.height))
? ? ? ? ? ? letDividerColorImage =UIColor.white.asImage(CGSize.init(width:1, height:self.wk_size.height))
? ? ? ? ? ? setBackgroundImage(UIColor.white.asImage(CGSize.init(width:self.wk_size.width, height:self.wk_size.height)), for: .normal, barMetrics: .default)
? ? ? ? ? ? setBackgroundImage(tintColorImage, for: .selected, barMetrics: .default)
? ? ? ? ? ? setBackgroundImage(tintColorImage, for: .highlighted, barMetrics: .default)
? ? ? ? ? ? setBackgroundImage(tintColorImage, for: [.highlighted, .selected], barMetrics: .default)
? ? ? ? ? ? setDividerImage(DividerColorImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
? ? ? ? ? ? setDividerImage(DividerColorImage, forLeftSegmentState: .selected, rightSegmentState: .selected, barMetrics: .default)
? ? ? ? ? ? self.apportionsSegmentWidthsByContent = true
? ? ? ? ? ? layer.borderColor = UIColor.white.cgColor
? ? ? ? ? ? layer.borderWidth=0
? ? ? ? }
? ? }
}
extension UIColor {
? ? publicfuncasImage(_size:CGSize) ->UIImage? {
? ? ? ? varresultImage:UIImage? =nil
? ? ? ? letrect =CGRect(x:0, y:0, width: size.width, height: size.height)
? ? ? ? UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.main.scale)
? ? ? ? guard let context = UIGraphicsGetCurrentContext() else {
? ? ? ? ? ? returnresultImage
? ? ? ? }
? ? ? ? context.setFillColor(self.cgColor)
? ? ? ? context.fill(rect)
? ? ? ? resultImage =UIGraphicsGetImageFromCurrentImageContext()
? ? ? ? UIGraphicsEndImageContext()
? ? ? ? returnresultImage
? ? }
}