【问题标题】:Remove spacing between tab bar items (left and right)删除标签栏项目之间的间距(左右)
【发布时间】:2016-11-11 22:03:58
【问题描述】:

在“项目位置”选项上使用“填充”值时如何去除标签栏项目之间的间距?

我尝试了以下方法:

    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
    }

}

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

【问题讨论】:

  • 只是一个注释@user3427013,我看到你从编辑中删除了!,它是图像显示所必需的(降价语法)。我已经给你加回来了。
  • 感谢钟雨辰
  • 仅供参考,标签栏的典型用例是在选择/取消选择标签栏项目时图像和文本本身会改变颜色(例如,圆圈和“第一个”文本)。您通常不会更改整个标签栏项目的背景颜色。
  • 感谢您的回复@AdamPro13,但客户要求此 UI...我别无选择,只能复制 photoshop 文件。

标签: ios swift uitabbaritem


【解决方案1】:

您也可以使用影响图像的标题偏移:

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

在这种情况下,结果将是:

它如何与三个项目一起工作:

【讨论】:

  • 它不起作用。 :\ 我仍然在第一个和最后一个标签栏项目上看到绿线。
  • @user3427013 也许我错过了什么。我用照片更新了三个项目的答案。请解释你试图得到的结果。 (可能有一些屏幕)
  • 看来问题出在图片大小上。您设置了一个尺寸为 barItem 的图像,但在更改偏移量后 - 项目的大小会改变,但图像的大小不会。
  • 我为尺寸(宽度和高度)添加了一个静态值,但它仍然不起作用。感谢您的回复。
  • 尽量不要设置图片。只需使用系统一,看看结果是否相同。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
        tabBarController?.tabBar.frame.origin.x = -2
        tabBarController?.tabBar.frame.size.width += 2
    

    【讨论】:

      【解决方案4】:

      抱歉回复晚了。希望这会有所帮助!

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

      【讨论】:

        猜你喜欢
        • 2016-11-09
        • 2016-05-08
        • 2015-01-20
        • 2015-12-04
        • 1970-01-01
        • 2013-08-01
        • 2023-01-02
        • 2015-11-24
        • 1970-01-01
        相关资源
        最近更新 更多