環境
swift4
xcode10.1
やること
UISegmentedControlの背景色をStoryBoardから変更してみる。
こんなもの作る場合ですね。
流れ
1.UISegmentedControlを継承したクラスの作成
2.作成したクラスにIBInspectableに背景色を設定するプロパティを設定
3.StoryBoardでUISegmentedControlを作成し、1のクラスを設定
4.2のプロパティにカラーを設定
1.UISegmentedControlを継承したクラスの作成
こちらのリンクを参考にクラスを作成します。
https://qiita.com/son_s/items/7ca2acf690d10f9fd1b7
@IBDesignable
class DesignableSegment: UISegmentedControl {
}
2.作成したクラスにIBInspectableに背景色を設定するプロパティを設定
UISegmentedControlにIBInspectableを設定し、
その中でカラーを変更します。
先程のコードにIBInspectableを追加します。
@IBDesignable
class DesignableSegment: UISegmentedControl {
@IBInspectable internal var segmentColor: UIColor? {
didSet {
self.tintColor = segmentColor
self.backgroundColor = UIColor.white
self.layer.cornerRadius = 4
}
}
}
3.StoryBoardでUISegmentedControlを作成し、1のクラスを設定

4.2のプロパティにカラーを設定

これで実行すればSegmentedControlの色を変更できます。
おまけ
ユースケースとして、StoryBoardからだけでなく、ソースコードからもカラーを変更したくなるかもしれません。
そんな時はviewDidLoadあたりでsegmentColorに直接カラーをぶち込んで下さい。
そんなの当たり前だよと突っ込まれそうですが。。。
override func viewDidLoad() {
super.viewDidLoad()
segmentV.segmentColor = .red
}