UIEdgeInsets 不适用于 TabBar 中的系统图像
UIEdgeInsets not working on System Images in TabBar
我正在为 UITabBarItem
个图像使用 XCode 个系统图像(SF 符号)。我想删除我已经完成的 UITabBarItem
标题。但也将 UITabBarItem
图像稍微向下移动。
过去,当我不使用系统映像时,使用 UIEdgeInsets
就可以正常工作。但是,这似乎对系统映像没有影响。
代码:
let imageConfiguration = UIImage.SymbolConfiguration(weight: .regular)
let imageInsets = UIEdgeInsets(top: 8, left: 0, bottom: -8, right: 0)
lazy var activityTabBarItem: UITabBarItem = {
let image = UIImage(systemName: "stopwatch")?.applyingSymbolConfiguration(imageConfiguration)
let tabBarItem = UITabBarItem(title: nil,
image: image,
selectedImage: image)
tabBarItem.imageInsets = imageInsets
return tabBarItem
}()
有解决办法吗?
花了我一段时间,但你可以使用 UIImage 属性 withBaselineOffset(fromBottom: CGFloat)
示例:
UIImage(systemName: "someName")?.withBaselineOffset(fromBottom: 6.0)
花了我几个小时,但我 运行 在 SwiftUI 中的自定义 tabBarController 上进行了此操作。抱歉回复晚了。
您需要使用 - withAlignmentRectInsets(_ alignmentInsets: UIEdgeInsets) 属性 UIImage,才能成功设置 SFSymbols 的插图。以下代码适用于您的案例:
image.withAlignmentRectInsets(UIEdgeInsets(top: 0, left: 0, bottom: -6, right: 0)
我正在为 UITabBarItem
个图像使用 XCode 个系统图像(SF 符号)。我想删除我已经完成的 UITabBarItem
标题。但也将 UITabBarItem
图像稍微向下移动。
过去,当我不使用系统映像时,使用 UIEdgeInsets
就可以正常工作。但是,这似乎对系统映像没有影响。
代码:
let imageConfiguration = UIImage.SymbolConfiguration(weight: .regular)
let imageInsets = UIEdgeInsets(top: 8, left: 0, bottom: -8, right: 0)
lazy var activityTabBarItem: UITabBarItem = {
let image = UIImage(systemName: "stopwatch")?.applyingSymbolConfiguration(imageConfiguration)
let tabBarItem = UITabBarItem(title: nil,
image: image,
selectedImage: image)
tabBarItem.imageInsets = imageInsets
return tabBarItem
}()
有解决办法吗?
花了我一段时间,但你可以使用 UIImage 属性 withBaselineOffset(fromBottom: CGFloat)
示例:
UIImage(systemName: "someName")?.withBaselineOffset(fromBottom: 6.0)
花了我几个小时,但我 运行 在 SwiftUI 中的自定义 tabBarController 上进行了此操作。抱歉回复晚了。
您需要使用 - withAlignmentRectInsets(_ alignmentInsets: UIEdgeInsets) 属性 UIImage,才能成功设置 SFSymbols 的插图。以下代码适用于您的案例:
image.withAlignmentRectInsets(UIEdgeInsets(top: 0, left: 0, bottom: -6, right: 0)