如何调整标签栏徽章位置?

Bli*_*ios 8 objective-c uitabbarcontroller uitabbaritem ios

我在标签栏上显示徽章,但是当数字增加时,它会显示在标签栏项目中,如图所示

这个图片

我想稍微向左移动徽章视图,使其适合选定的选项卡image.i尝试如此处所述 ,但没有运气.那么有没有办法调整徽章视图位置?任何帮助将不胜感激.

Ami*_*mir 8

我发现Kateryna的答案对于让我走上正轨非常有用,但我不得不稍微更新一下:

func repositionBadge(tab: Int){

    for badgeView in self.tabBarController!.tabBar.subviews[tab].subviews {

        if NSStringFromClass(badgeView.classForCoder) == "_UIBadgeView" {
            badgeView.layer.transform = CATransform3DIdentity
            badgeView.layer.transform = CATransform3DMakeTranslation(-17.0, 1.0, 1.0)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

请注意,选项卡整数不是零索引,因此第一个选项卡将是数字1,第二个选项卡将是2,等等.


Kat*_*ina 5

更新徽章值时,请添加以下方法:

func updateBadge(#value: UInt, tabBarItemTag: Int) {
     self.viewControllerForTag(tabBarItemTag)?.tabBarItem.badgeValue = value
     for badgeView in (tabBar.subviews[tabBarItemTag] as! UIView).subviews {
         let className = "\(_stdlib_getDemangledTypeName(badgeView))"
         if className.rangeOfString("BadgeView").location != NSNotFound {
             badgeView.layer.transform = CATransform3DIdentity
             badgeView.layer.transform = CATransform3DMakeTranslation(0.0, 10.0, 20.0)
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

您需要使用第二个CATransform3DMakeTranslation来进行正确定位.在此代码中,徽章在底部/左侧移动一点.首先需要CATransform3DMakeTranslation来假装徽章移动.它是一个Swift代码,但您可以轻松地将其转换为Objective-C.