我有一个UITabBarController
子类,我想在选定的UITabBarItem
图标下面添加一个小的白色矩形图标。我使用了UIView
,我将TabBarItem
作为子视图,并将视图作为子视图添加到其中。我在viewWillAppear
中执行此操作,但是当我选择另一个标签时,它不会显示在该标签栏项下。
这是我的代码:
let view = orderedTabBarItemViews()[selectedIndex]
bottomIcon.frame = CGRect(x: 0, y: 42, width: 10, height: 3)
bottomIcon.center = CGPoint(x: view.bounds.size.width / 2, y: view.bounds.size.height / 2)
bottomIcon.backgroundColor = UIColor.white
bottomIcon.layer.cornerRadius = 2
view.addSubview(bottomIcon)
orderedTabBarItemViews()
函数将TabBarItem
s作为UIView
的数组获取。
这是我想要实现的目标的图像
答案 0 :(得分:1)
我不认为添加和显示/隐藏视图有一种方便的方法。
我建议您使用UIImage
s执行此操作 - 因此一个用于选定状态的点,另一个用于非选择状态的无点。
答案 1 :(得分:1)
有几种选择:
将其添加为所选图像的一部分。这是最简单的解决方案。
将其添加为标签标签(例如,使用-
字符,或使用大字体的更好的unicode字符,例如━
或⬬
)。
将其添加为UITabBar
。
答案 2 :(得分:1)
这是我使用unicode字符创建的快速黑客⬬:
extension UITabBarController {
func addDotToTabBarItemWith(index: Int,size: CGFloat,color: UIColor, verticalOffset: CGFloat = 1.0) {
// set distance from tab bar icons
for tabItem in self.viewControllers! {
tabItem.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0.0, vertical: verticalOffset)
}
// set default appearance for tabbar icon title
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: color,NSFontAttributeName:UIFont(name: "American Typewriter", size: size)!], for: .normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: color,NSFontAttributeName:UIFont(name: "American Typewriter", size: size)!], for: .selected)
// place the dot
guard let vc = self.viewControllers?[index] else {
log.error("Couldn't find a TabBar Controller with index:\(index)")
return
}
vc.tabBarItem.title = "⬬"
}
}