ios - TabBar 更改选定的背景颜色
问题描述
选择时我将背景颜色更改为标签栏,但在 iPhone X 中这是行不通的。
截屏
我的代码:
class TabbarVC: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let numberOfItems = CGFloat(tabBar.items!.count)
UITabBar.appearance().selectionIndicatorImage = UIImage().makeImageWithColorAndSize(color: #colorLiteral(red: 0.1294117719, green: 0.2156862766, blue: 0.06666667014, alpha: 1), size: CGSize(width:tabBar.frame.width/numberOfItems,height:(tabBar.frame.height)))
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
tabBar.invalidateIntrinsicContentSize()
tabBar.superview?.setNeedsLayout()
tabBar.superview?.layoutSubviews()
}
}
extension UIImage {
func makeImageWithColorAndSize(color: UIColor, size: CGSize) -> UIImage {
UIGraphicsBeginImageContextWithOptions(size, false, 0)
color.setFill()
UIRectFill(CGRect(x:0,y:0,width:size.width,height:size.height))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
}
如何使用自动高度更改选定的 bckg 颜色?
任何帮助,谢谢!
解决方案
您可以使用以下代码更改选定的 TabBar 背景颜色。
private func changeTabBarBackground(){
//Change Background Color of Selected Image
let numberOfItems = CGFloat(5)
let tabBarItemSize = CGSize(width: (self.tabBar.frame.width) / numberOfItems,
height: (self.tabBar.frame.height))
self.tabBar.selectionIndicatorImage
= UIImage.imageWithColor(color: UIColor.green,
size: tabBarItemSize).resizableImage(withCapInsets: .zero)
self.tabBar.frame.size.width = (self.view.frame.width) + 4
self.tabBar.frame.origin.x = -2
}
PS:当然你应该将 numberOfItems 更改为你想要的数字。
推荐阅读
- git - git HEAD 分离,当前分支的尖端在后面
- python - 在 django 中添加两个数字,输出将在同一页面上打印相同
- asp.net-core - 授权角色/策略属性在 .Net Core 3 中不起作用
- c# - 为什么音频在我的代码统一中不起作用?统一 c#
- c++ - ruby 本机扩展中的堆栈级别太深错误,如何降低堆栈级别?
- function - 如何在方案中调用函数?
- list - Dart 从地图返回按键排序的值列表
- javascript - element.classList.contains() 和 element.matches() 有什么区别
- c# - 如何使用代码取消 DataGridView 单元格编辑,类似于用户按下 Esc 键时的行为?
- angular - Angular8:对同一组件使用不同的模板