やること
UITabBarの選択されているところだけ、背景をブラックにしたい。
5sの横幅とアイテム数をもとに作った画像を背景に設定していたが
iPhoen6やPlusのサイズだと、設定していた画像がはみ出してしまった。
なのでコードでUIImageを作って、当てはめることにしました。
実装
TabBarController.swift
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
self.tabBar.selectionIndicatorImage = setImage()
}
// 横幅とアイテム数をもとにUIImageを生成
func setImage() -> UIImage {
let size = CGSize(width: UIScreen.mainScreen().bounds.size.width/CGFloat((self.tabBar.items?.count)!), height: 49)
UIGraphicsBeginImageContext(size)
let cgContextRef = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(cgContextRef, UIColor.blackColor().CGColor)
CGContextSetAlpha(cgContextRef, 1.0)
CGContextFillRect(cgContextRef, CGRectMake(0, 0, size.width, size.height))
let colorImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return colorImage
}
これで、選択した時の背景画像に幅が均等になったものがセットされます。
わざわざパターン別に画像を用意しなくても対応できる!
あと色は、お好みで!