微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在 UITabBarItem 上设置诸如 adjustsfontsizetofitwidth 之类的东西

如何解决有没有办法在 UITabBarItem 上设置诸如 adjustsfontsizetofitwidth 之类的东西

试图让所有用户都可以访问我的应用,但我在为 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代码中做这样的事情?

非常感谢!

解决方法

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

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

或者,如果您更喜欢继续使用 UITabBarItem,我建议您自己进行测量。测量你想要的文本/字体的大小,如果它太大,把字体调小到适合它。

,

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

UITabBarItem 绝对不是为这种目的而制造
例如,您可以使用外观代理更改某些属性,但 Apple 没有提供此类功能来处理您的情况。

试图让所有用户都可以访问我的应用...

我知道您愿意实施 a11y,并且 Apple 引入了一项处理 UITabBarItem 的有趣功能:Large Content Viewer
UITabBarItem 继承自 UIBarItem,它公开了一些 largeContent... 属性,突出了我推荐的这个功能。

我不确定您的概念是否可以为您的应用提供更多 a11y,因为 tab bar items aren't made for that in my view
无论如何,我总是尽量避免在标签栏中出现文本:显式 SF 符号 可能是另一种合适的解决方案。 ?

如果你真的想遵循你的想法,你可以被告知文本大小设置(traitCollectionDidChange)并使用例如'mmmatey'方法(测量?)⟹为什么不呢,但我真的不推荐这种构思方式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。