iOS Swiftチートシート・ライブラリまとめ  UITabBar・UITabBarItem編


# デザイン
## TabBarの上の線を消す

```swift
tabBar.shadowImage = UIImage()
```

## TabBarの色を変える

```swift
tabBar.barTintColor = UIColor.blue
```

## TabBarItemの選択色を変える

```swift
tabBar.tintColor = UIColor.purple
```

## TabBarItemの非選択色を変える(iOS 10.0以降)

```swift
tabBar.unselectedItemTintColor = UIColor.white
```

## バッチを表示する

```swift
// 一つ目のタブにバッヂを表示
tabBar.items!.first?.badgeValue = "バッヂ"
```

## バッチの色を変える

```swift
tabBar.items!.first?.badgeColor = UIColor.purple
```


# 表示
## TabBarController表示
```swift
let firstVC = UIViewController()
firstVC.view.backgroundColor = UIColor.orange
firstVC.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 1)
            
let secondVC = UIViewController()
secondVC.view.backgroundColor = UIColor.blue
secondVC.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads, tag: 2)
            
let tabBarController = UITabBarController()
tabBarController.setViewControllers([firstVC, secondVC], animated: false)
present(tabBarController, animated: true, completion: nil)
```

# 操作

## タブを選択する

```swift
tabBarController?.selectedIndex = 2
```

##　タブをタップした時にモーダルを表示する

```swift
class TabViewController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }

    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        /// 
        if viewController is タブに設定されているViewControllerのClassを指定 {
            let modalVC = UIViewController()
            modalVC.view.backgroundColor = UIColor.purple
            present(modalVC, animated: true, completion: nil)
            return false
        }
        return true
    }
}
```

## navigationControllerでpushした時に、TabBarを非表示にする
```swift
hidesBottomBarWhenPushed = true
```


# ライブラリ
## TabBarItemアニメーション・バッチ表示・吹き出し表示・その他カスタム
[eggswift/ESTabBarController](https://github.com/eggswift/ESTabBarController)
![CustomStyle3.png](https://qiita-image-store.s3.amazonaws.com/0/68288/f68135c2-a487-93cf-c20c-6f33d9354eb8.png)
![CustomStyle2.png](https://qiita-image-store.s3.amazonaws.com/0/68288/cf9ae789-77ae-d0c0-0035-3bdc0903b41e.png)
![CustomSelectStyleGif.gif](https://qiita-image-store.s3.amazonaws.com/0/68288/e8bb4b8c-28a9-f0dc-48f8-a4f241219053.gif)


## TabBarItemアニメーション
[Ramotion/animated-tab-bar](https://github.com/Ramotion/animated-tab-bar)
![RAMAnimatedTabBarDemo.gif](https://qiita-image-store.s3.amazonaws.com/0/68288/3e50c9dd-eb78-44e1-bd64-fdc93f1d0bb1.gif)

## 上付きTabBar(1)
[KrishnaPatell/KPSmartTabBar](https://github.com/KrishnaPatell/KPSmartTabBar)
![demo.gif](https://qiita-image-store.s3.amazonaws.com/0/68288/17e677d6-9265-e806-57ef-405e47b0b459.gif)


## 上付きTabBar(2)
[xmartlabs/XLPagerTabStrip](https://github.com/xmartlabs/XLPagerTabStrip)
![bar.gif](https://qiita-image-store.s3.amazonaws.com/0/68288/36f1294a-bc36-6e02-2378-1e86209fb445.gif)


## 上付きTabBar(3)
[EndouMari/TabPageViewController](https://github.com/EndouMari/TabPageViewController)
![demo2.gif](https://qiita-image-store.s3.amazonaws.com/0/68288/692c7a73-baf5-b9d9-b01d-fbee20a789c0.gif)


# チートシート シリーズ
- [UITabBar・UITabBarItem編](https://qiita.com/homyu/items/298fb31c159a4cc75fcf)
- [UINavigationBar・UIBarButtonItem編](https://qiita.com/homyu/items/1365c8f8c3be4465df87)