我有一个设计请求,要将底部边框添加到活动(选定)UISegmentedControl项目。
我成功隐藏了所有边框,并使用附加的扩展脚本为自选/选定状态设置了自定义背景。
import UIKit
import Foundation
extension UISegmentedControl {
func removeBorders() {
setBackgroundImage(imageWithColor(color: backgroundColor ?? Constants.Color.mainNavBarBGColor), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: Constants.Color.mainNavBarBGColor), for: .selected, barMetrics: .default)
tintColor = UIColor.white
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
setTitleTextAttributes([NSAttributedStringKey.foregroundColor : UIColor.white], for: .selected)
}
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!
}
}