如何解决有没有办法在 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 举报,一经查实,本站将立刻删除。