swift - Swift中选定的tabBar项目透明背景
问题描述
这是我有的两种颜色:
static let mainDarkBlue = UIColor(r: 40, g: 51, b: 86)
static let mainDarkBlueTransparent = UIColor(r: 40, g: 51, b: 86, a: 0.8)
我已经mainDarkBlue
设置了 barTint 颜色,这很好,但是mainDarkBlueTransparent
我想将它作为选定的 tabBar 项目的背景颜色。
tabBar.barTintColor = UIColor.mainDarkBlue
这很好用,但我想在我的两个项目中选择和未选择之间产生色差。
另外顺便说一句,如果有人知道如何制作所选项目的阴影,请告诉我。
解决方案
要为选定的 tabBar-item 设置背景颜色,您可以执行以下操作:
extension UIColor {
func image(_ size: CGSize = CGSize(width: 71, height: 48)) -> UIImage {
return UIGraphicsImageRenderer(size: size).image { rendererContext in
self.setFill()
rendererContext.fill(CGRect(origin: .zero, size: size))
}
}
}
此扩展可用于将颜色转换为图像。然后可以将此图像用作selectionIndicatorImage
.
tabBar.selectionIndicatorImage = UIColor.mainDarkBlueTransparent.image()
为了更加灵活,您还可以执行以下操作(基于 vpoltave 提供的链接):
let numberOfItems = CGFloat(tabBar.items!.count)//make sure that items isn't nil -> maybe you should use some if let or guard instead + make sure that your are executing this code after you have set the tabBarItems
let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
tabBar.selectionIndicatorImage = UIColor.mainDarkBlueTransparent.image(tabBarItemSize)
推荐阅读
- laravel - 如何从 OctoberCMS 中的代码访问标记树枝变量
- python - 在数据混合的csv中分离两列的正确方法是什么?
- python - Pandas.DataFrame:查找给定列中值最接近(但低于)指定值的行的索引
- javascript - 正则表达式字符串替换,同时保留原始换行符
- sql-server-2008-r2 - 如何从 mdf 恢复 SQL Server 数据库?
- .net - .Net 如何按计数获取列表中的常见元素
- javascript - 赛普拉斯表单提交到相同的网址
- clang - 修改 Clang/LLVM 编译器执行的优化
- angular - Angular 9 SSR - 在哪里设置全局['window'](使用多米诺骨牌)?
- mysql - 我在 Wordpress 中工作,在这种情况下我有一个疑问