【问题标题】:Is there a way to set something like adjustsfontsizetofitwidth on UITabBarItem有没有办法在 UITabBarItem 上设置诸如 adjustsfontsizetofitwidth 之类的东西
【发布时间】:2021-05-01 03:53:55
【问题描述】:

我试图让所有用户都可以访问我的应用程序,但在为 TabBar 创建项目时偶然发现了一个问题,我很想有办法解决它。

我的项目中有这样的东西:

func setupTabBarItems(tabName: String, tabImage: UIImage?, tabSelectedImage: UIImage?) {
    let tabBarItem = UITabBarItem(title: tabName, image: tabImage, selectedImage: tabSelectedImage)

    tabBarItem.title = tabName
    tabBarItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: AppColor.primary], for: .selected)
    tabBarItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: AppColor.darkDeep], for: .normal)
    tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: AppFont.medium(12)], for: .normal)

    tabBarItem.imageInsets = UIEdgeInsets.init(top: -10, left: 0, bottom: 0, right: 0)
    tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -18)

    DispatchQueue.main.async {
        self.navigationController.tabBarItem = tabBarItem
    }
}

和:

static func medium(_ fontSize: CGFloat) -> UIFont {
    let font = UIFont(name: AppFont.someRandomTextFont, size: fontSize)!
    let fontMetrics = UIFontMetrics(forTextStyle: .body)
    return fontMetrics.scaledFont(for: font)
}

当增加dynamic text type 时,title 会脱离实际项目。 例如,当为UILabel 执行此操作时,我只需检查“Automatically Adjust Font”选项并将“Minimum Font Scale”更新为 0.25。

有没有办法在以编程方式描述TabBarItem的代码中做这样的事情?

非常感谢!

【问题讨论】:

    标签: ios swift accessibility uitabbaritem dynamic-type-feature


    【解决方案1】:

    UITabBarItem 不包含标签 - 这样您就可以直接设置最小比例。

    建议使用自定义视图而不是 UITabBarItems。

    或者如果您更愿意继续使用UITabBarItem,我建议您自己进行测量。测量您想要的文本/字体的大小,如果它太大,请使字体大小足够小以适合它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2012-03-20
      • 2020-08-18
      相关资源
      最近更新 更多