如何在Swift中的所选UITabBarItem图标下添加小图标

时间:2017-01-07 14:32:04

标签: ios swift uikit

我有一个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的数组获取。 这是我想要实现的目标的图像

3 个答案:

答案 0 :(得分:1)

我不认为添加和显示/隐藏视图有一种方便的方法。

我建议您使用UIImage s执行此操作 - 因此一个用于选定状态的点,另一个用于非选择状态的无点。

答案 1 :(得分:1)

有几种选择:

  1. 将其添加为所选图像的一部分。这是最简单的解决方案。

  2. 将其添加为标签标签(例如,使用-字符,或使用大字体的更好的unicode字符,例如)。

  3. 将其添加为UITabBar

  4. 的叠加层

答案 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 = "⬬"
    }
}