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