【发布时间】:2019-03-12 19:33:56
【问题描述】:
我有一个 UIToolbar 包含几个 UIBarButtonItem s,不同的字体大小。所有项目似乎都与某个基线对齐。根据工具栏的高度,特定的字体大小往往会出现在垂直中心。但其他项目偏离中心。如何设置这些其他项目显示在垂直中心?
注意:这些项目都是文本 - 没有图像。 许多其他响应非常古老和/或仅适用于图像。大多数 obj.c 函数/方法都可以轻松转换为 Swift。
我使用以下方式放置物品:
func addLabel(_ text: String, textcolor: UIColor?, font: UIFont?, items: inout [UIBarButtonItem], verticalOffset: CGFloat) -> Int {
let item = UIBarButtonItem(title: text, style: UIBarButtonItem.Style.plain, target: nil, action: nil)
if font != nil {
item.setTitleTextAttributes([NSAttributedString.Key.font : font!], for: UIControl.State.normal)
}
if textcolor != nil {
item.tintColor = textcolor!
}
items.append(item)
return items.count-1
}
我试过了(这些都不行):
- setTitleTextAttributes 和 .baselineOffset
- setTitlePositionAdjustment
- setBackgroundVerticalPositionAdjustment
-
let item = UIBarButtonItem(customView: itemView)其中 itemView 是一个 UIView
也许最后一个我将 UILabel 包装在视图中,然后将项目设置为 customView 可能有效,但对我来说,它显示在所有地方。我尝试将主要方法内容替换为:
let itemView = UIView(frame: CGRect(x: 0, y: verticalOffset, width: 0, height: 0))
let itemText = UILabel()
itemText.text = text
itemText.textColor = textcolor
itemText.font = font
itemText.sizeToFit()
itemView.translatesAutoresizingMaskIntoConstraints = false
let item = UIBarButtonItem(customView: itemView)
itemView.addSubview(itemText)
如何偏移工具栏上的某些项目?
【问题讨论】:
标签: swift vertical-alignment uibarbuttonitem uitoolbar