2016-11-11 119 views
2

如何在“项目位置”选项上使用“填充”值时删除标签栏项目之间的间距?删除标签栏项目之间的间距(左侧和右侧)

我已经试过如下:

let tabBarController = window!.rootViewController as! UITabBarController 
    tabBarController.tabBar.itemSpacing = 0 
    let numberOfItems = CGFloat(tabBarController.tabBar.items!.count) 
    let tabBarItemSize = CGSize(width: tabBarController.tabBar.frame.width/numberOfItems, height: tabBarController.tabBar.frame.height) 
    tabBarController.tabBar.selectionIndicatorImage = UIImage.imageWithColor(color: UIColor.secondaryHighlight(), size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero) 
    for item in tabBarController.tabBar.items! { 
     item.imageInsets = UIEdgeInsetsMake(0, 0, 0, 0) 
    } 

extension UIImage { 

    class func imageWithColor(color: UIColor, size: CGSize) -> UIImage { 
     let rect: CGRect = CGRect(x: 0, y: 0, width: size.width, height: size.height) 
     UIGraphicsBeginImageContextWithOptions(size, false, 0) 
     color.setFill() 
     UIRectFill(rect) 
     let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
     UIGraphicsEndImageContext() 
     return image 
    } 

} 

这个结果总是这样(注意,第一个选项卡栏项目的左边的绿线):

tab bar items

+1

刚一说明@ user3427013 ,我看到你从编辑中删除'!',它需要显示图像(标记语法)。我已经为你添加了它。 –

+0

Thanks Yuchen Zhong – user3427013

+0

仅供参考,标签栏的典型用例是当选中/取消选择标签栏项目时(例如,圆圈和“First”文本),图像和文本本身会改变颜色。您通常不会更改整个标签栏项目的背景颜色。 – AdamPro13

回答

1

你可以标题偏移量也会影响图像:

tabBar.items!.first?.titlePositionAdjustment = UIOffsetMake(30.0, 0.0); 
    tabBar.items!.last?.titlePositionAdjustment = UIOffsetMake(-30.0, 0.0); 

In这种情况下,结果将是:
result screenshot

它是如何与三项工作:
three items result screenshot

+0

它不起作用。 :\我仍然在第一个和最后一个标签栏项目上得到绿线。 – user3427013

+0

@ user3427013也许我错过了一些东西。我用三张照片更新我的答案。请解释一下你试图得到的结果。 (也许有一些屏幕) – Artem

+0

这似乎是问题是在你的形象的大小。您可以设置一个大小为barItem的图像,但是在更改偏移量后 - 项目的大小将会更改,但图像的大小不会更改。 – Artem

0
tabBarController?.tabBar.frame.origin.x = -2 
    tabBarController?.tabBar.frame.size.width += 2 
0

对不起,我迟到的答案。希望这可以帮助!

tabBar.frame.size.width = self.view.frame.width + 4 
tabBar.frame.origin.x = -2 
0

要能够控制所有标签栏项目“不仅是第一个和最后一个”可以使用的物品数组索引这样的位置:

tabBar.items?[1].titlePositionAdjustment = UIOffsetMake(-15.0 , 0.0) tabBar.items?[2].titlePositionAdjustment = UIOffsetMake(15.0 , 0.0)

相关问题