iOS 自定義 tabbar 的 badgeValue顯示樣式

系統的 tabbar 中設置tabbarItem.badgeValue 後顯示樣式是紅色的小數字,由於UI在設計 app 界面時考慮到風格統一的問題,那麼就需要讓 badgeValue 背景色,文字顏色有所改變.通過遍歷所有 tabbar 內部子 view 沒有發現某個 view 時可以改變這個 badgeValue 的樣式的,通過查找 subLayer 方式也沒有找到控制着這個 badgeValue 顯示的 layer.

能不能通過自定義 badgeValue方式去顯示滿足我們的需求呢?



答案是肯定的,這裏有寫好的自定義BKTabbar 一個 UITabbar 的子類和一個 UITabBbarItem+Extension  的分類,完美的解決了這個問題

使用起來也比較簡單

使用方法

1 需要自定義 TabBarController  通過 KVC 方式替換 tabbarControoler 的 tabBar

let newTabbar                       = BKTabbar(frame: self.tabBar.frame)

// 需要先給 tabbarcontroller 設置 viewControllers 已經 tabbarItem 屬性 包括 image selectImage 纔可以替換掉系統的 tabbar

newTabbar.items                     = self.tabBar.items

// badgeValue 的文字顏色

newTabbar.badgeValueTextColor       = UIColor.black

// badgeValue 背景色

newTabbar.badgeValueBackgroundColor = UIColor.yellow

self.setValue(newTabbar, forKey: "tabBar")

2         self.tabBarItem.badgeValue = "100"

通過 UIViewControler 的 tabBarItem.badgeValue 屬性設置 badgeValue的值 , 跟系統的 badgeValue 設置方式一致,只是屏蔽了系統的實現方法,改成自定義 badgeValue 的顯示樣式

注意 不能通過 self.tabbarController.tabbarItem.badgeValue 去設置自定義 badgeValue 顯示內容,因爲這 self.tabbarController.tabbarItem 獲取的這個 UITabBarItem 跟 UITabbar 內部的 Item數組裏的所有 UITabbarItem 都不一樣,所以就無法去修改 badgeValue 的值,但是可以用viewController.tabBarItem.badgeValue 去設置badgeValue 的值






iOS 10以後出現了新的api 可以直接設置 badgValue顯示樣式



如果不考慮適配 iOS10以下系統的話,可以使用上邊給出的新的api,需要適配其他 iOS 版本的話可以考慮我寫的這個 BKBadgeValue ,你在使用過程中有任何問題都可以聯繫作者 : 教授哥哥 1060545231

以上代碼部分已放到 github 上邊 : https://github.com/ZhaoBingDong/BKBadgeValue[https://github.com/ZhaoBingDong/BKBadgeValue]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章