如何将自定义视图(作为子视图)添加到UISegmentedControl选定项目?

时间:2018-03-27 15:12:50

标签: swift uisegmentedcontrol

我有一个设计请求,要将底部边框添加到活动(选定)UISegmentedControl项目。

我成功隐藏了所有边框,并使用附加的扩展脚本为自选/选定状态设置了自定义背景。

UISegmentedControl with a border active item indicator

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!
 }
}

0 个答案:

没有答案